2013-09-06 2 views
0

Привет всем, я новичок в asp.net fileUploader и я использую код раздувом для загрузки:FileUpload с помощью Jquery Ajax и Generic Handler

В HTML:

<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" /> 
<br /> 
<br /> 
<asp:Button ID="Button1" runat="server" Text="Upload Selected File(s)" /> 

JavaScript код:

$("#Button1").click(function (evt) { 
    var fileUpload = $("#FileUpload1").get(0); 
    var files = fileUpload.files; 
    var data = new FormData(); 

    for (var i = 0; i < files.length; i++) { 
     data.append(files[i].name, files[i]); 
    } 

    var options = {}; 
    options.url = "FileUploadHandler.ashx"; 
    options.type = "POST"; 
    options.data = data; 
    options.contentType = false; 
    options.processData = false; 
    options.success = function (result) { alert(result); }; 
    options.error = function (err) { alert(err.toString()); }; 

и код обработчика:

if (context.Request.Files.Count > 0) 
{ 
    HttpFileCollection files = context.Request.Files; 
    for (int i = 0; i < files.Count; i++) 
    { 
     HttpPostedFile file = files[i]; 
     string fname = context.Server.MapPath("~/uploads/" + file.FileName); 

     file.SaveAs(fname); 
    } 
} 

context.Response.ContentType = "text/plain"; 
context.Response.Write("File(s) Uploaded Successfully!"); 

У меня есть две проблемы: первая не может найти файл для загрузки в корневом каталоге веб-приложения, а вторая - обратная передача страницы, есть кто-нибудь, кто поможет мне решить мои проблемы, спасибо!

ответ

1

Я был немного смущен загрузкой файла jQuery-Upload, но после просмотра документации плагина я нашел то, что необходимо для плагина для работы в среде Windows.

ПРОБЛЕМА 1: СОХРАНЕНИЕ ФАЙЛОВ - в связи с этой проблемой убедитесь, что вы сохраняете действующий и ранее созданный каталог, а также имеете права WRITE для этого каталога.

ПРОБЛЕМА 2: ЗАГРУЗИТЬ Postback - Вы должны настроить ваш сценарий загрузки записать загруженный файл, и возвращает правильный ответ JSON на плагин, как определено в документации плагина: https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#using-jquery-file-upload-ui-version-with-a-custom-server-side-upload-handler

if (context.Request.Files.Count > 0) { 
    HttpFileCollection files = context.Request.Files; 
    for (int i = 0; i < files.Count; i++) { 
     HttpPostedFile file = files[i]; 
     string fname = context.Server.MapPath("~/uploads/" + file.FileName); 
     file.SaveAs(fname); 
    } 
} 

upload_response = '{"files":[{"name": ' + file.FileName + '","size":' file.FileSize + ',"url":"http:\/\/example.org\/files\/ + file.FileName + ",' 
upload_response =+ '"thumbnailUrl": "http:\/\/example.org\/files\/thumbnail\/ + file.FileName + ","deleteUrl": "http:\/\/example.org\/files\/ + file.FileName + ",' 
upload_response =+ '"deleteType": "DELETE"}]}"' 

context.Response.ContentType = "application/json"; 
context.Response.Write(upload_response); 

Обратите внимание, что Я также изменил ContentType на «application/json». Синтаксис этого кода может быть неполным, но самое главное - вывести эти поля JSON, необходимые плагину.

Смежные вопросы