首页 > 解决方案 > 上传时在客户端 (javascript) 压缩 PSD 和 AI 文件

问题描述

我正在发布帖子(带有 PSD 文件),这些文件的大小非常大,所以我在上传文件后(以及在发布帖子之前)尝试压缩它们,我使用了 jszip 包,它对我有用但不幸的是我如果不使用 Safari 和 IE 不支持的(数据传输),则无法修改 FileList() 对象以将新的压缩文件分配给文件字段。

let zip = new JSZIP()
zip.file(filename, file_input_field.files[0])
zip.generateAsync({type:"blob"}).then((blobdata)=>{
let zipblob=new DataTransfer();
let zip_file=new File([zipblob], “filename.zip”);
list.items.add(zip_file);
let myFileList = list.files;
file_input_field.files = myFileList

感谢您的帮助!

标签: javascriptjqueryjsonjszip

解决方案


files属性是一个FileList 对象,您不能修改它。

在您的情况下,我将使用 FormData 接口并异步发送表单。您在此页面上有一个清晰的示例:使用 FormData 对象 - MDN

在他们使用的示例中,XMLHttpRequest但您也可以使用Fetch API。另请参阅:使用 Fetch


推荐阅读