Я довольно часто использовал File Uploader, и я думаю, что это лучший загрузчик файлов.
Действие - это метод (URL), который получает вызов от вашего клиентского скрипта Ajax.
Вы должны определить DIV в своем HTML:
<div id="uploaderFile"></div>
Я использовал функцию javascript для построения загрузчика вокруг DIV:
function CreateImageUploader() {
var uploader = new qq.FileUploader({
element: $('#uploaderFile')[0],
template: '<div class="qq-uploader">' +
'<div class="qq-upload-drop-area"><span>Drop files here to upload</span></div>' +
'<div class="qq-upload-button ui-button ui-widget ui-corner-all ui-button-text-only ui-state-default">Seleziona il Listino Excel</div>' +
'<ul class="qq-upload-list"></ul>' +
'</div>',
hoverClass: 'ui-state-hover',
focusClass: 'ui-state-focus',
action: 'Home/UploadImage',
allowedExtensions: ['jpg', 'gif'],
params: { },
onSubmit: function(file, ext) {
},
onComplete: function(id, fileName, responseJSON) {
$("#PopupImageUploader").dialog('close');
}
}
});
}
Что здесь происходит, вы создаете загрузчик вокруг элемента: $('#uploaderFile')[0]
. Я использовал стандартный шаблон, но вы можете изменить внешний вид.
Когда вы это сделаете, все будет в значительной степени настроено на стороне клиента.
На стороне сервера (это зависит от того, что вы используете) вы должны перехватить и прочитать файл и сохранить его.
Я использую ASP.NET MVC. Вы можете найти мои действия здесь и здесь
Ваш серверный код сможет сохранить файл там, где вы хотите, и вернет информацию клиентскому скрипту.
Лично я возвращаю данные json, которыми управляю с событием onComplete
, чтобы: закрыть диалог (как в примере); показать сообщение и т. д. и т. д.
Если вы хотите передать параметры клиенту на стороне сервера, вы можете вернуть объект JSON. Я бы сделал что-то вроде этого:
return ("{success:true, newfilename: '" + newFileName + "'}");
Я считаю, что в PHP может быть что-то вроде этого:
echo {success:true, newfilename: '" + newFileName + "'}";
Простите, если в этом есть ошибки, но я никогда не писал ни одной строки PHP за всю свою жизнь; -)
клиентская сторона теперь может проверять объект JSON следующим образом:
onComplete: function(id, fileName, responseJSON) {
alert(responseJSON.newfilename);
}
Как видите, я передаю результат действия: success:true
или success:false
, чтобы показать пользователю предупреждение:
onComplete: function(id, fileName, responseJSON) {
if (responseJSON.success)
{
alert(responseJSON.newfilename);
}
else {
alert("something wrong happened");
}
}