vb.net類比檔案上傳

來源:互聯網
上載者:User

標籤:http   os   檔案   io   art   for   re   c   

Imports Microsoft.VisualBasicImports System.NetImports System.Security.Cryptography.X509CertificatesImports System.Security.AuthenticationImports System.Net.SecurityImports System.Collections.GenericImports System.TextImports System.IOPublic Class HttpUpload    Public Function GetWebRequest(ByVal url As String, ByVal method As String) As HttpWebRequest        Dim req As HttpWebRequest = Nothing        If url.Contains("https") Then            ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf CheckValidationResult)            req = CType(WebRequest.CreateDefault(New Uri(url)), HttpWebRequest)        Else            req = CType(WebRequest.Create(url), HttpWebRequest)        End If        req.ServicePoint.Expect100Continue = False        req.Method = method        req.KeepAlive = True        req.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"        Return req    End Function    Public Function CheckValidationResult(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal errors As SslPolicyErrors) As Boolean        Return True    End Function    ‘‘‘ <summary>    ‘‘‘ 上傳檔案    ‘‘‘ </summary>    ‘‘‘ <param name="url"></param>    ‘‘‘ <param name="textParams"></param>    ‘‘‘ <param name="filename"></param>    ‘‘‘ <param name="filestream"></param>    ‘‘‘ <returns></returns>    ‘‘‘ <remarks></remarks>    Public Function UploadFile(ByVal url As String, ByVal textParams As Dictionary(Of String, String), ByVal filename As String, ByVal filestream As System.IO.Stream) As String        Dim boundary As String = DateTime.Now.Ticks.ToString("X") ‘ 隨機分隔線        Dim req As HttpWebRequest = GetWebRequest(url, "POST")        req.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary        Dim reqStream As System.IO.Stream = req.GetRequestStream()        Dim itemBoundaryBytes As Byte() = Encoding.UTF8.GetBytes(vbCrLf & "--" & boundary & vbCrLf)        Dim endBoundaryBytes As Byte() = Encoding.UTF8.GetBytes(vbCrLf & "--" & boundary & "--" & vbCrLf)        ‘ 組裝文本請求參數        If Not IsNothing(textParams) Then            Dim textTemplate As String = "Content-Disposition:form-data;name=""{0}""" & vbCrLf & "Content-Type:text/plain" & vbCrLf & vbCrLf & "{1}"            For Each kvp As KeyValuePair(Of String, String) In textParams                Dim textEntry As String = String.Format(textTemplate, kvp.Key, kvp.Value)                Dim textBytes As Byte() = Encoding.UTF8.GetBytes(textEntry)                reqStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length)                reqStream.Write(textBytes, 0, textBytes.Length)            Next        End If        ‘ 組裝檔案請求參數        Dim fileTemplate As String = "Content-Disposition:form-data;name=""{0}"";filename=""{1}""" & vbCrLf & "Content-Type:{2}" & vbCrLf & vbCrLf        Dim fileEntry As String = String.Format(fileTemplate, "file", filename, "application/octet-stream")        Dim itemBytes As Byte() = Encoding.UTF8.GetBytes(fileEntry)        reqStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length)        reqStream.Write(itemBytes, 0, itemBytes.Length)        Dim fileBytes As Byte() = New Byte(filestream.Length) {}        filestream.Read(fileBytes, 0, fileBytes.Length) ‘把檔案流讀入位元組數組        filestream.Close()        reqStream.Write(fileBytes, 0, fileBytes.Length) ‘上傳位元組數組        reqStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length) ‘結尾標誌        reqStream.Close()        Dim rsp As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)        Return GetResponseAsString(rsp, Encoding.UTF8)    End Function    ‘‘‘ <summary>    ‘‘‘ 把響應流轉換為文本。    ‘‘‘ </summary>    ‘‘‘ <param name="rsp"></param>    ‘‘‘ <param name="encoding"></param>    ‘‘‘ <returns></returns>    ‘‘‘ <remarks></remarks>    Public Function GetResponseAsString(ByVal rsp As HttpWebResponse, ByVal encoding As Encoding) As String        Dim stream As System.IO.Stream = Nothing        Dim reader As StreamReader = Nothing        Try            ‘ 以字元流的方式讀取HTTP響應            stream = rsp.GetResponseStream()            reader = New StreamReader(stream, encoding)            Return reader.ReadToEnd()        Catch ex As Exception        Finally            ‘ 釋放資源            If Not IsNothing(reader) Then reader.Close()            If Not IsNothing(stream) Then stream.Close()            If Not IsNothing(rsp) Then rsp.Close()        End Try        Return String.Empty    End FunctionEnd Class


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.