我已经使用File Uploader相当多,我认为它是最好的文件上传。
该操作是从您的Ajax客户端脚本接收调用的方法(URL)。 您的HTML定义一个DIV:
<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。您可以找到我的动作here和here 您的服务器端代码将设法将文件保留在所需位置,并将信息返回给客户端脚本。
就我个人而言,我将事件onComplete
管理的json数据返回到:关闭对话框(如示例中所示);显示一条消息等等等等等
如果你想传参数给服务器端的客户端,你可以返回一个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");
}
}
谢谢,我的serverside是PHP。 – 2011-03-18 08:12:32
我想我的问题是,我几乎没有关于AJAX如何工作的知识。我仍然不知道它是如何工作的 - 所以URL处理程序不会在浏览器中加载,而只是被调用? – 2011-03-18 08:15:51
如果你使用PHP,你可以在这里使用他们的例子:https://github.com/valums/ajax-upload/blob/master/server-side/upload-handler.php是的,URL是服务器端代码你用它来保存你从磁盘中选择的文件。 – LeftyX 2011-03-18 08:22:08