ASP.NET/VB.NET 文件上传控件

标签 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

最佳答案

问题是您尝试将 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)

关于ASP.NET/VB.NET 文件上传控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819583/

相关文章:

asp.net - ASP.NET MVC 中的简单、硬编码授权,无需复杂的提供程序和数据库

c# - MVC 视频流式传输到移动网络浏览器

wpf - (WPF Datagrid) 如何确定项目的列索引

c# - 如何在自定义用户控件(.Net 4、Winforms)上使用项目集合编辑器?

php - CakePHP多文件上传字段只上传一张图片

c# - 如何以编程方式单击另一个站点上的按钮?

php - 自动化网站开发,如 wix.com 、 edicy.com 等

c# - 如何使用可选参数从 C# 调用用 VB.NET 编写的方法

javascript - 任何人都可以使用 JavaScript 将文件上传到我的 Google Drive 公共(public)文件夹

php - Codeigniter:MP4 视频上传不工作