javascript - 如何将base64转换为zip并移动到服务器

标签 javascript php jszip

我正在使用 JSZip 来压缩一些用户上传文件并将该 zip 文件存储在服务器上。 zip_file 包含我想要存储在服务器中的 zip 文件。 zip_file 采用 base64 格式,因此,如果我将其以 LongText 格式存储在 PHPMyAdmin 中,它无法存储某些 zip。是否可以将 zip_file 转换为压缩文件并移动到目录?如果是的话怎么办?或者如何在 PHPMyAdmin 中存储 base64 值。

zip.generateAsync({type:"base64"}).then(function (content) {
   zip_file = "data:application/zip;base64," + content;
   //zip_file convert and move to /uploads folder
});

最佳答案

您可以将返回类型设置为blob,使用XMLHttpRequest()Blob发送到 php

zip.generateAsync({type:"blob"}).then(function (content) {
   var request = new XMLHttpRequest();
   request.open("POST", "/path/to/server");
   request.send(content);
});

在 php 中使用 php://input,参见 Beyond $_POST, $_GET and $_FILE: Working with Blob in JavaScript and PHP

<?php

  // choose a filename
  $filename = "file.zip";

  // the Blob will be in the input stream, so we use php://input
  $input = fopen('php://input', 'rb');
  $file = fopen($filename, 'wb'); 

  // Note: we don't need open and stream to stream, 
  // we could've used file_get_contents and file_put_contents
  stream_copy_to_stream($input, $file);
  fclose($input);
  fclose($file);

?>

关于javascript - 如何将base64转换为zip并移动到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934833/

相关文章:

php - 使用单独的链接 php 文件获取当前 session 信息

javascript - 如何为(导出到 .xlsx)SheetJS js-xlsx : https://github. com/SheetJS/js-xlsx 的单元格数据设置公式

javascript - 下载图像并使用 JSZip 和 JS-Zip Utils 下载为 Zip

php - Symfony 2 : INNER JOIN on non related table with doctrine query builder

javascript - 使用 FileReader 和 JSZip.js 在浏览器中打开 zip 文件

javascript - JS 过滤器允许带有 AND 且不带破折号的数字

javascript - 提交请求后如何查看完整的 URL?

javascript - 在 React Native + Redux 中使用 Navigator

JavaScript:将参数传递给 onclick 处理程序

javascript - 客户端和服务器端编程有什么区别?