神魂顛倒論壇logo

icon
首頁Microsoft 應用技術區.NET / Visual Studio → ASP.net Ap 上傳圖檔 與 api 串接範例

Silverlight 5 | 雷射溶脂 | 瘦小腹 | 植髮 | 眼袋 | 玻尿酸 | 電波拉皮 | Flash | 購物車 | Flash Player 11.2 | 豐胸 |

下一主題 上一主題


ASP.net Ap 上傳圖檔 與 api 串接範例


ASP.net Ap 上傳圖檔 與 api 串接範例 簡版






前一陣子,一個專案中 使用了 Web 界面讓使用者上傳圖片,本來也沒啥好說的,但因為後來該專案還有衍生出 手機App及PC版桌面程式,而這些衍生的玩意也都要上傳圖片,所以紀錄一下囉

這裡所謂的上傳圖片,不是給使用者一個界面去選擇圖檔,而可能是 直接讀取一個圖檔,或者從 攝影機鏡頭 取得畫面,或者是擷取螢幕正在執行的畫面等,反正方法都一樣,用讀取圖檔直接可以說完上傳的部份,至於取得螢幕畫面的部份,那是另一件事情而已。

縮然這些PC版 及 App 不是我的專案範圍,但碰到合作廠商不知道該怎樣撰寫,所以就有了這個簡單的範例囉
1. 目標是 一個網址,要傳送資料及圖檔上去2. 不是讓使用者選擇圖檔上傳,應該比較類似直接自拍後自動上傳圖檔
很顯然,表單會是 multipart/form-data 格式,得自己組合傳送的欄位及圖檔字串,最後POST資料出去接收回應即可。

以下為《VB》原始碼
        '要傳送的圖檔,或改成其他來源
Dim filePath As String = "C:\A.png"
Dim fileName As String = System.IO.Path.GetFileName(filePath)
'接收端URL
Dim url As String = "http://xxx.xxx.xxx.xxx/receiver.aspx"
'編碼方式
Dim enc As System.Text.Encoding = _
System.Text.Encoding.GetEncoding("UTF-8")
'區隔分割字元
Dim boundary As String = System.Environment.TickCount.ToString()



然後建議使用HttpWebRequest
以下為《VB》原始碼
        '使用HttpWebRequest
Dim req As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create(url), _
System.Net.HttpWebRequest)
'POST方式傳遞
req.Method = "POST"
'ContentType設定
req.ContentType = "multipart/form-data; boundary=" + boundary


接著要開始組合了
以下為《VB》原始碼
        'POST 傳送的欄位組合
Dim postData As String = ""
postData = "--" + boundary + vbCrLf + _
"Content-Disposition: form-data; name=""欄位名稱1""" + _
vbCrLf + vbCrLf + "欄位名稱1的值" + vbCrLf + _
"--" + boundary + vbCrLf + _
"Content-Disposition: form-data; name=""欄位名稱2""" + _
vbCrLf + vbCrLf + "欄位名稱2的值" + vbCrLf + _
"--" + boundary + vbCrLf + _
"Content-Disposition: form-data; name=""圖檔欄位Photofile""; filename=""" + _
fileName + """" + vbCrLf + _
"Content-Type: image/png" + vbCrLf + _
"Content-Transfer-Encoding: binary" + vbCrLf + vbCrLf
' 組合成果就是 postData
'轉換為 Bytes 陣列
Dim startData As Byte() = enc.GetBytes(postData)
postData = vbCrLf + "--" + boundary + "--" + vbCrLf
Dim endData As Byte() = enc.GetBytes(postData)




Flash Player 12 | 回到頂部
Icon
網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1

就要開始傳送資料了 簡版






接著就要開始傳送資料了

以下為《VB》原始碼
        '開啟要傳送的檔案
Dim fs As New System.IO.FileStream( _
filePath, _
System.IO.FileMode.Open, _
System.IO.FileAccess.Read)


計算要post出去的資料長度
以下為《VB》原始碼
req.ContentLength = startData.Length + endData.Length + fs.Length


取得 Stream 資訊,準備post送出

以下為《VB》原始碼
        Dim reqStream As System.IO.Stream = req.GetRequestStream()
'寫入要準備送出的資料
reqStream.Write(startData, 0, startData.Length)
'發送文件中的內容
Dim readData(&H1000) As Byte
Dim readSize As Integer = 0
While True
readSize = fs.Read(readData, 0, readData.Length)
If readSize = 0 Then
Exit While
End If
reqStream.Write(readData, 0, readSize)
End While
fs.Close()
reqStream.Write(endData, 0, endData.Length)
reqStream.Close()


最後接收伺服器端的回應,並判斷是否成功及該做些其他啥事情吧

以下為《VB》原始碼
        Dim res As System.Net.HttpWebResponse = _
CType(req.GetResponse(), System.Net.HttpWebResponse)
'取得Stream回傳資訊
Dim resStream As System.IO.Stream = res.GetResponseStream()
'伺服器回應
Dim sr As New System.IO.StreamReader(resStream, enc)
Dim ResultText As String
ResultText = sr.ReadToEnd()
Console.WriteLine(ResultText)
sr.Close()


收工∼




自體脂肪隆乳 | 回到頂部
Icon
網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1

用C# 及 HttpClient 的寫法 簡版






用C# 及 HttpClient 的寫法

以下為《C#》原始碼
HttpClient httpClient = new HttpClient();
MultipartFormDataContent form = new MultipartFormDataContent();

form.Add(new StringContent(username), "username");
form.Add(new StringContent(useremail), "email");
form.Add(new ByteArrayContent(imagebytearraystring, 0, imagebytearraystring.Count()), "Photofile", "A.jpg");

HttpResponseMessage response = await httpClient.PostAsync("PostUrl", form);

response.EnsureSuccessStatusCode();
httpClient.Dispose();
string sd = response.Content.ReadAsStringAsync().Result;










購物車 | 回到頂部
Icon
網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1
下一主題 上一主題