Fileupload.hasfile, переданный из javascript в webmethod, возвращает false
Чтобы избежать обратной отправки и загрузки страниц, я придумал метод JavaScript, который берет выбранный файл и загружает его на сервер. Но всякий раз, когда мой метод проверяет, является ли HasFile истинным или ложным, ответ всегда ложен. Конечно, потому что я не реализую свои элементы управления в ASP:UpdatePannel, и нет никаких триггеров для обратной передачи моего кода при нажатии кнопки загрузки. Итак, теперь мой вопрос таков: можно ли в любом случае передать заполненный файл моему вебметоду? Ниже приведен мой веб-метод:
Public Function UploadImages(ByVal fileUpload As FileUpload) As UploadedImage Dim uploadedImage As New UploadedImage Dim path As String = Server.MapPath("~/UploadedImages/") Dim fileOK As Boolean = False Try If fileUpload.HasFile Then Dim fileExtension As String fileExtension = System.IO.Path. _ GetExtension(fileUpload.FileName).ToLower() Dim allowedExtensions As String() = _ {".jpg", ".jpeg", ".png", ".gif"} For i As Integer = 0 To allowedExtensions.Length - 1 If fileExtension = allowedExtensions(i) Then fileOK = True End If Next If fileOK Then Try fileUpload.PostedFile.SaveAs(path & _ fileUpload.FileName) uploadedImage.Success = "File uploaded!" Catch ex As Exception uploadedImage.Success = "File could not be uploaded." End Try Else uploadedImage.Success = "Cannot accept files of this type." End If uploadedImage.UploadedURL = fileUpload.FileName Else uploadedImage.UploadedURL = "" uploadedImage.Success = "No File to upload." End If Catch ex As Exception uploadedImage.UploadedURL = "" uploadedImage.Success = "Could not upload file" End Try Return uploadedImage End Function
Ниже приведена моя функция в Javascript:
function ChooseFileFunction() { var fileToUpload = document.getElementById('<%= FileUpload1.ClientID %>'); $.ajax({ type: 'POST', url: 'MyWebService.asmx/UploadImages', data: JSON.stringify({ fileUpload : fileToUpload }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { alert("success"); } }); }
В asp.net:
<div class="ChooseFile_Div"><asp:FileUpload ID="FileUpload1" CssClass="ChooseFile_FileUpload" runat="server" /></div> <br/> <asp:Button ID="Button1" OnClientClick="ChooseFileFunction();return false;" runat="server" Text="Upload" />
Что я уже пробовал:
Я попробовал asp:AsyncPostBackTrigger с методом в коде позади, но возвращенное значение файла было ложным
F-ES Sitecore
Вы не можете загружать такие файлы через javascript, так как он не имеет доступа к файловой системе. Google "asp.net asynch file upload", и вы найдете различные варианты того, как это сделать.
H.AL
не могли бы вы дать мне несколько ссылок?