ASP.NET/VB.NET FileUpload Control - PullRequest
       4

ASP.NET/VB.NET FileUpload Control

2 голосов
/ 28 апреля 2011

У меня проблема с 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 ]

4 голосов
/ 28 апреля 2011

Проблема в том, что вы пытаетесь прочитать в PostedFile как локальный файл (на веб-сервере), а не из объекта HttpPostedFile, прикрепленного к FileUploader.

0 голосов
/ 29 апреля 2011

Я что-то пробовал, и это сработало ..

            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: \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...