我试图在服务器上传一个zip文件,然后将其解压缩到客户端。
代码:
<form id="frmUpload" action="UploadHandler.ashx" method="post">
<input id="fileUpload" name="fileToUpload" type="file" accept=".zip"/>
<input id="btnUpload" type="submit" value="Submit" />
</form>
服务器代码:
public void ProcessRequest (HttpContext context)
{
var uploadedFile=context.Request.Files["fileToUpload"];
//uploadedFile is then unzipped, filenames are extracted and put in a string
// filenames="a,b,c";
context.Response.Write(filenames);
}
我希望在客户端有一个回调函数,我可以访问它。
我尝试了第二种方法:
$("#frmUpload").submit(function (evt) {
// evt.preventDefault();
//var data = $("#frmUpload")[0].serialize(); // returning empty string
var form = $("#frmUpload")[0];
var file = form["fileToUpload"].value;
$.ajax({
type: "POST",
url: "UploadHandler.ashx",
data: "file="+file,
success: function (result, status, respObj) {
alert(result);
}
});
})
在这种情况下,成功回调正在执行但是,在服务器上我没有文件对象,因为传递给服务器的数据只是zip文件的路径。如何将文件对象传递给服务器?
由于
答案 0 :(得分:0)
您无法将文件对象传递给服务器。相反,您应该将文件上传到服务器,然后服务器解压缩文件并在会话或数据库中设置一个标志,指示该文件已被处理。 同时,您可以将ajax请求循环到请求文件状态的服务器。 像这样的东西
var i=0;
for(;;){
if(i==1) return;
$.ajax({
type: "POST",
url: "UploadHandler.ashx",
data: "file="+file,
success: function (result, status, respObj) {
if(result){
alert(result);
i = 1;
}
}
});
}