![](/img/trans.png)
[英]How to send a JSON data object to the server using Javascript XMLHttpRequest?
[英]How to upload zipped blob data to server in javascript using XMLHttpRequest?
我正在尝试上传一个由 JSZip() 生成的 zip 文件的 blob。 如果我放置文本(作为“文件数据”)而不是 blob(zip 数据),则以下代码可以正常工作。 如果我尝试上传一个压缩的 blob,我总是会收到这个错误“文件数据不存在。”,我认为我不会错过任何关于谷歌的帖子来解决这个问题。 但没有任何作用,我有足够的 PHP 上传限制。 所以这不是问题,即使我尝试上传 kb 大小的压缩图像。 它不起作用。
我正在使用 NodeJs 和 VSCode。 我真的很感激这个解决方案。 谢谢你。
客户端(Javascript):
const req = new XMLHttpRequest();
req.responseType = 'blob';
const formData = new FormData();
formData.append('filename', fileName);
formData.append('filedata', blob, fileName);
req.open(
'POST',
'xyz.com/data/savedata.php',
true
);
req.upload.onprogress = function(e) {
if (e.lengthComputable) {
const percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete);
}
};
req.send(formData);
服务器端(savedata.php):
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
$filename = $_POST['filename'];
$filedata = $_POST['filedata'];
$dataTime = date("Y-m-d h:m:s");
if ( isset($_POST['filename']) ) {
error_log ("$dataTime FileName '$filename' exists!\n", 3, 'logs.txt');
} else {
$filename = "DataFile.zip";
error_log ("$dataTime FileName does not exists! A New name is created.\n", 3, 'logs.txt');
}
if ( isset($_POST['filedata']) ) {
error_log ("$dataTime File data exists!\n", 3, 'logs.txt');
$file = fopen($filename, 'wb');
if ($file !== false) {
if (fwrite($file, $filedata)) {
error_log ("$dataTime File has been written successfully!\n", 3, 'logs.txt');
fclose($file);
}
} else {
error_log ("$dataTime Could not open '$filename' file!\n", 3, 'logs.txt');
}
} else {
error_log ("$dataTime filedata does not exists!\n", 3, 'logs.txt');
}
?>
我不太擅长 PHP 但我认为您应该使用以下方式访问文件:
if ( isset($_FILES['filedata'] ) {
move_uploaded_file( $_FILES['userFile']['tmp_name'], "Desired Directory");
}
有关更多信息,请参阅此
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.