我是使用JSZIP的新手,可能会问一个明显的问题。但是这里有:
我正在使用“文件上传”控件将文件上传到服务器。 源文件位于客户端的路径中。目标文件应位于服务器上。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>jszip demo</title>
<script type="text/javascript" src="../Scripts/jszip.js"></script>
<script type="text/javascript" src="../Scripts/jszip-load.js"></script>
<script type="text/javascript" src="../Scripts/jszip-deflate.js"></script>
<script type="text/javascript" src="../Scripts/jszip-inflate.js"></script>
<script type="text/javascript">
function zipFileAndUpload()
{
var myFileUploadControl1 = document.getElementById('myFileUploadControl1');
var FILENAMEABSOLUTE = myFileUploadControl1.value;
var zip = new JSZip(FILENAMEABSOLUTE);
zip.file(FILENAMEABSOLUTE);
var content = zip.generate({ type: "blob" });
//
// Other Code Here
//
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:FileUpload ID="myFileUploadControl1" runat="server"/>
<input type="button" value="Select File" onclick="zipFileAndUpload()"/>
</form>
</body>
</html>
我的要求是当客户端选择文件时,应该在javascript中使用JSZIP压缩,然后上传到服务器。
我试图找到一个解决方案,但什么都没得到。 我迄今为止尝试过的解决方案还没有奏效。
任何人都可以帮助我吗?
答案 0 :(得分:0)
构建zip后,您可以使用jQuery将其发布到服务器,如下所示。
var zipData = zip.generate({ type: "base64" });
var formData = new FormData();
formData.append('zipData', zipData);
var postToServer = $.ajax({
type: "POST",
url: "Upload", // My server-side MVC controller has an action named Upload
data: formData,
processData: false,
contentType: false,
});
postToServer.done(function () {
...
});
postToServer.fail(function( jqXHR, textStatus ) {
...
});
在服务器端,您将需要使用代码接收数据流,并使用您选择的任何服务器端技术将其保存在那里。
答案 1 :(得分:0)
我现在没有时间发布确切的代码,这个问题已经过时了,被遗弃了。
但是ZIP在客户端上的好处的确是您可以将多个文件上传到一个文件中。这可能与5年前有所不同。但是解决方案的概要是这样:
这一切都可以非常流畅地以流方式完成,但是要享受这一点,您需要绝对学习在JavaScript中使用连续传递样式编码,并且永远不要假设准备好处理数据的函数会同步返回。 (一个常见的初学者的错误,对于那些不完全将延续传球风格视为一个漂亮概念的人们来说,这是不断的痛苦。)
如果有任何兴趣/答复/评论/支持,我将返回并粘贴工作版本中的一些代码。