ASP.NET / VB.NET FileUpload控件

时间:2011-04-28 13:43:24

标签: asp.net vb.net file-upload

我有FileUpload的问题,当我从本地机器中选择一个文件时,它不会带来文件的真实路径,它将使用项目文件的路径并假设我选择的文件在那里,任何想法?

实施例: 文件名是“Q.JPG”并且在“C:\”中 当我浏览到“C:\”并选择“Q.JPG”并单击“打开”时,出现以下错误 找不到文件'C:\ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE \ q.jpg'。 因此,当我启动上传文件到FTP的代码时,它将返回错误,因为文件不存在

HTML方面:

<asp:FileUpload ID="FU" runat="server" Height="24px" />

以下是VB代码:

Protected Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click

    If FU.PostedFile IsNot Nothing AndAlso FU.PostedFile.FileName <> "" Then
        Dim MaxSize As Integer = FU.PostedFile.ContentLength
        If MaxSize > "2097152" Then
            lblUpload.Text = "The file size cannot exceed 2 MB"
            btnSave.Focus()
            GoTo 99
        End If


        '--------------------------
        ' set up request...
        Dim LocFile As String = FU.PostedFile.FileName
        Dim clsRequest As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://myftp.com/" & LocFile), System.Net.FtpWebRequest)
        clsRequest.Credentials = New System.Net.NetworkCredential("username", "password")
        clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

        ' read in file...
        Dim bFile() As Byte = System.IO.File.ReadAllBytes(FU.PostedFile.FileName)

        ' upload file...
        Dim clsStream As System.IO.Stream = clsRequest.GetRequestStream()
        clsStream.Write(bFile, 0, bFile.Length)
        clsStream.Close()
        clsStream.Dispose()
        '--------------------------


        lblUpload.Text = "Uploaded"
        btnSave.Focus()
    Else
        lblUpload.Text = "Choose a file to upload"
        btnSave.Focus()
    End If

99:'什么都不做

End Sub

2 个答案:

答案 0 :(得分:4)

问题是你试图将PostedFile作为本地文件(在Web服务器上)读取,而不是从附加到FileUploader的HttpPostedFile对象读取。

尝试:

Dim objFileStream As System.IO.Stream = FU.PostedFile.InputStream
Dim bFile(objFileStream.Length) As Byte
objFileStream.Read(bFile, 0, objFileStream.Length)

答案 1 :(得分:0)

我尝试了一些东西,但它确实有用..

            FU.SaveAs("C:\" & FU.FileName)

            '--------------------------
            ' set up request...

            Dim LocFile As String = FU.PostedFile.FileName
            Dim clsRequest As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("MyFTP.com" & LocFile), System.Net.FtpWebRequest)

            clsRequest.Credentials = New System.Net.NetworkCredential("username", "password")
            clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

它工作..只需将文件从FU(FileUpload)保存到C:\然后将地址设置为始终从C开始:\