js如何将本地文件夹 压缩 然后上传到服务器。

发布于 2022-09-11 18:27:39 字数 46 浏览 22 评论 0

公司做一项目,需要将用户本地的文件夹进行压缩然后传给后端,请问能否用js实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

薄情伤 2022-09-18 18:27:39

想多了吧

赴月观长安 2022-09-18 18:27:39

纯js在单纯的浏览器环境中是不可能这样做的。
其实这个最好的办法是让用户自行压缩,然后上传,这个就比较常见啦。

帅哥哥的热头脑 2022-09-18 18:27:39

想多了吧

拥有 2022-09-18 18:27:39

你这里的用户,指的是通过浏览器访问你们网站的用户吗?

如果没有理解错误的话,根本不可能!

如果你都能不经过用户同意,直接上传用户本地文件了,那谁还敢用浏览器上网!

除非用户用的是你自家开发的浏览器!!!

——————————

貌似理解错了问题,你问的是在用户主动上传的情况下,怎么压缩。

那应该也无法直接在前端压缩,浏览器应该不直接提供这种api吧。

上面用户提到的 jszip,确实不错的插件,学习了!

溺渁∝ 2022-09-18 18:27:39

jszip确实可以,拿到fileblobjszip转换成zip

这是一个下载的例子,上传不会有什么区别。

<input type="file" id="test" onchange="zipFiles(this)" multiple="multiple" webkitdirectory />
function zipFiles(dom){
  let zip = new JSZip();
  for(let f of dom.files){
      zip.file(f.webkitRelativePath, f);
  }
  
 zip.generateAsync({type:"blob"})
  .then(function (blob) {
    const link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = 'test.zip';
    link.click();
  });
}

https://codepen.io/a631807682...

作妖 2022-09-18 18:27:39

你可以试一下jszip。

npm install jszip

冰雪梦之恋 2022-09-18 18:27:39

一般都是后端压缩文件夹

子栖 2022-09-18 18:27:39

首先,上传用js是可以的,FormData(),压缩建议不要用js在线压缩,即便是可以的也不要,原因有下
一 js是单进程的,你压缩吃内存,你得让用户等很久
二 一般你上传的就是.rar .zip压缩完的,这样要让用户自压缩完上传,因为如果上传一个 shell,或者其他脚本文件,用户是不是相当于自己上传了一个后门呢,随时可以操作你的服务器?
三、现在基本上上传到各类云,比如七牛,然后返回的是云里面的地址,这个是正确的做法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文