2011-07-30 71 views
1

我正在寫一個VB.Net應用程序,它需要發送一個文件到網頁腳本。VB.NET上傳文件到網址

1. Dim uriString As New System.Uri("http://url/setup/image.php?title="+addNew_title.Text+"&price="+addNew_price.Text) 
2. Dim myWebClient As New System.Net.WebClient() 
3. Dim responseArray As Byte() = myWebClient.UploadFileAsync(uriString, OpenFileDialog1.FileName) 
4. Dim response As String = System.Text.Encoding.ASCII.GetString(responseArray) 

沒有與URI的一個問題,我給,它說,其中「uriString中」使用第3行「表達式不會產生一個值」。當我使用myWebClient.UploadFile(String,String)它凍結髮送,所以我發現,繼續執行代碼,我不得不使用「UploadFileAsync」,但它不提供[String,String],但它需要[Uri,String]。

只是爲了記錄在案,我會放的代碼截圖: http://i.stack.imgur.com/CZKIk.png

我有什麼改變,所以代碼是有效的,或者如果有另一種方式來上傳這個文件,請分享:)

+1

除非該程序是個人或私人使用,我不會推薦通過VB .NET程序來做這件事。由於VB .NET基於CLR,所以很容易進行反編譯,找出如何處理上傳,並模擬這種情況,僅使用惡意或較大的文件。您可以對您的.NET代碼進行加密,使其無法通過SmartAssembly輕鬆進行反編譯。哦,看着你的代碼,你也沒有任何形式的認證。只是讓你知道這可能是一個好主意。 –

回答

1

UploadFileAsync不返回任何值:http://msdn.microsoft.com/en-us/library/ms144232.aspx

你必須將事件處理程序註冊到UploadFileCompleted事件得到響應,或者您的要求(這實際上異步方法調用的點)。

編輯

這是前一段時間,我最後編程VB.Net,但我認爲以下應工作爲例:

Public Class FileUploader 

    Dim WithEvents client As New System.Net.WebClient() 

    Public Sub StartUpload(ByVal targetUrl As String, ByVal filename As String) 

     Dim uriString As New System.Uri(targetUrl) 

     Me.client.UploadFileAsync(uriString, filename) 

    End Sub 

    Sub FileUploadCompleted(ByVal sender As Object, ByVal e As System.Net.UploadFileCompletedEventArgs) Handles client.UploadFileCompleted 
     Dim response As String = System.Text.Encoding.ASCII.GetString(e.Result) 

     ' further process your response string 
    End Sub 
End Class 
+0

我可以問一個示例代碼,對於文件發送,我從來沒有發送文件vb到http。 – Eddie