none
About FTP UpLoad problem... RRS feed

  • 問題

  • 目前手邊有本松岡出的 .NET網路與I/O技術手冊一書,裡面有提到FTP的使用,但依照書籍範例及光碟範例測試都仍有問題,還請前輩大大們幫忙解惑,謝謝!程式碼如下:

     

        Public Sub btnUpLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpLoad.Click
            Dim strFTPURI As String = "ftp://" + txtFTP.Text
            Dim saveFile As String = txtFileSelect.Text
            Dim userName As String = txtFTPID.Text
            Dim userPwd As String = txtFTPPwd.Text

            Try
                Dim uriftp As New Uri(strFTPURI)
                If (uriftp.Scheme <> Uri.UriSchemeFtp) Then
                    MessageBox.Show("非ftp配置uri")
                    Return
                End If

                Dim myFtpWebRequest As FtpWebRequest = CType(FtpWebRequest.Create(uriftp), FtpWebRequest)
                Dim myNetworkCredential As NetworkCredential = New NetworkCredential(userName, userPwd)

                myFtpWebRequest.Credentials = myNetworkCredential
                myFtpWebRequest.Method = WebRequestMethods.Ftp.UploadFile

                Dim myFileStream As New FileStream(saveFile, FileMode.Open, FileAccess.Read)
                Dim uploadBytes(CInt(myFileStream.Length)) As Byte
                myFileStream.Read(uploadBytes, 0, uploadBytes.Length)

    (第30行)Dim myStream As Stream = myFtpWebRequest.GetRequestStream()
                myStream.Write(uploadBytes, 0, uploadBytes.Length)

              myFileStream.Close()
                myStream.Close()
                myFtpWebRequest = Nothing

            Catch we As WebException
                MessageBox.Show(we.Status.ToString())  '取得回應狀態
                MessageBox.Show(we.ToString())
                MessageBox.Show(we.StackTrace)
            End Try
            MessageBox.Show("上傳完畢!!")
        End Sub

     

    執行後出現的問題訊息匡如下:

    第一個錯誤訊息匡

    ---------------------------

    System.Net.WebException: 對此 FTP 命令而言,要求的 URI 無效。

       System.Net.FtpWebRequest.GetRequestStream()

       FTPUpload.Form1.btnUpLoad_Click(Object sender, EventArgs e) D:\Demo_Test\FTPUpload\FTPUpload\Form1.vb: 30

    ---------------------------

    確定 後跳出第二個訊息匡 

    ---------------------------

    第二個錯誤訊息匡

    ---------------------------

       System.Net.FtpWebRequest.GetRequestStream()

       FTPUpload.Form1.btnUpLoad_Click(Object sender, EventArgs e) D:\Demo_Test\FTPUpload\FTPUpload\Form1.vb: 30

    ---------------------------

    確定  

    2007年5月22日 上午 08:23

解答

  • 我覺得去問作者也是一個不錯的方法:

    http://www.javanet.tw/modules/newbb/viewforum.php?forum=5

    2007年5月23日 上午 06:12
    版主
  • 我終於找到原因了...
    原來原作者的作法是必須輸入完整路徑的指定,而我先前只設定欲上傳的檔案路徑,之後指定要上傳的FTP位址,但後面就沒有再接續檔案名稱,難怪怎麼傳都傳不上去... ><"

    在DotNet Framework中..只能這樣設定方式嗎?能否只指定磁碟路徑然後將本機端要上傳上去的幾個目錄、檔案直接傳上去,FTP://xx.xx.xx.1,而不詳細指定"FTP://xx.xx.xx.1/QQ" 呢?
    2007年5月24日 上午 08:55

所有回覆