【发布时间】:2018-11-21 06:02:19
【问题描述】:
我用 Express 构建了一个服务器供用户上传图片,然后服务器处理图片数组并通过 res.download 响应一个 zip。
首先,我尝试发布带有提交功能的Html表单,它可以工作。
但我希望在浏览器处理数据时显示图像,所以我使用 BlockUI。
然后转到使用ajax发送表单,成功后会unblokUI,下载文件,然后转到其他页面。
现在服务器也得到了 ajax 并发送了响应,但它没有下载文件。
有人知道吗?我将不胜感激!!
HTML
<form id="form" action="url" method="post" enctype="multipart/form-data">
<h2>upload</h2>
<div>
<label>User:</label>
<input type="text" id="user" name="user" accept="text" required="required">
</div>
<input id="fileUpload" type="file" name="file" accept="image/*" multiple="" required="required">
<input type="submit" value="submit" id="submit">
</form>
JavaScript
<script>
$(document).ready(function(){
$("#form").submit(function(e) {
e.preventDefault();
$.blockUI({ message: '<img style="width:50%" src="img_path' });
var form_data = new FormData($('form')[0]);
$.ajax({
type: 'POST',
url: 'url',
data: form_data,
processData: false,
contentType: false,
success: function() {
$.unblockUI();
location.replace("url");
}
});
节点js
app.post('router', upload.array('file', 30),function(req, res) {
compressing.zip.compressDir(myfile_path).then(() => {
res.download(myfile)
}
})
【问题讨论】: