Ajax загрузка файла в ASP. NET - файлы, не видимые обработчиком - PullRequest
1 голос
/ 12 апреля 2020

Я впервые пытался загрузить файлы через Ajax и .ashx. Я использую FireFox 75.0, и когда я смотрю на свою веб-консоль, я добавил точку останова на frm.append(files[i], files[i].name); и вижу файл и / или файлы (входной файл имеет атрибут «множественный»), которые добавляются в FormData ( ) объект в моем сценарии. Элемент управления вводом файла (HTML5) имеет событие "onchange", которое вызывает javascript. JavaScript, кажется, работает правильно. Мой файл обработчика, однако, не видит HttpFileCollection. Я не могу понять, почему это не работает, поэтому мне нужна помощь.

Вот код страницы ASPX:

image

Вот мой код обработчика:

Imports System
Imports System.Web
Imports System.IO

Public Class UploadHandler : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Response.ContentType = "text/html"
        Dim files As HttpFileCollection = context.Request.Files()
        Dim UploadPath As String = ConfigurationManager.AppSettings("FormFileUpload")
        'Dim strFiles As String = String.Empty
        Try
            If context.Request.Files.Count = 0 Then
                context.Response.Write("<img src=""../../assets/img/NotAllowed.png"" alt="""" style=""margin-left: 5px; margin-right: 5px"" /> No Files Found!")
            Else
                For i As Integer = 0 To files.Count - 1
                    Dim file As HttpPostedFile = files(i)
                    Dim fname As String = String.Empty
                    fname = file.FileName
                    fname = Replace(fname, " ", "_") 'Replace spaces in file name
                    fname = Path.Combine(context.Server.MapPath(UploadPath), fname)
                    file.SaveAs(fname)
                Next
                context.Response.Write("<img src=""../../assets/img/CkMark.png"" alt="""" style=""margin-left: 5px"" />")
            End If
        Catch ex As Exception
            context.Response.Write("<img src=""../../assets/img/NotAllowed.png"" alt="""" style=""margin-left: 5px; margin-right: 5px"" /> Error!" & ex.ToString())
        End Try
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

В блоке Try Catch моего обработчика, где он проверяет количество файлов, он не видит файлы. Всегда возвращает "Файлы не найдены!" Когда я нажимаю на вкладку сети в своей веб-консоли, я вижу объекты файла - Content-Disposition: form-data; name = "[объектный файл]"

Test.docx

Буду очень признателен, если кто-нибудь скажет мне, что мне не хватает и как это исправить. Спасибо!

1 Ответ

0 голосов
/ 17 апреля 2020

Хотя мой сайт не MVC, после просмотра кода на этом сайте (https://www.yogihosting.com/jquery-file-upload/) и внесения изменений, я смог получить эту работу.

...