gpt4 book ai didi

php - 将二进制字符串保存到从POST发送的php文件中

转载 作者:可可西里 更新时间:2023-11-01 01:05:15 24 4
gpt4 key购买 nike

我有一个用于(.jpg、.ai、.pdf、.flv、.psd ....等)的拖放 uploader

我正在读取二进制文件并在 jquery post 中发送字符串:

function importZoneDrop(evt) {
evt.stopPropagation();
evt.preventDefault();

var files = evt.dataTransfer.files; // FileList object.

// files is a FileList of File objects. List some properties.
for (var i = 0, f; f = files[i]; i++) {
var start = 0;
var stop = files[0].size - 1;
var reader1 = new FileReader();
var reader2 = new FileReader();
var ext = f.name.substring(f.name.indexOf(".")+1);
if(ext == "JPEG" || ext == "jpeg" || ext == "JPG"){
ext ="jpg";
}

reader1.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
$("#import-drop-zone").append('<img src="'+e.target.result+'" />');
};
})(f);

reader2.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
$.post("/process/upload.php",{"blob":evt.target.result,"extension":ext},function(data){
console.log(data);
});
}
};

reader1.readAsDataURL(f);
var blob = f.slice(start, stop + 1);
reader2.readAsBinaryString(f);
}
}

这有效并发送文件。接下来获取字符串并使用file_put_contents写入:

$extension = $_POST['extension'];
$file = $_POST['blob'];//sent from jquery post
$filePath = "../_temp/monkey.".$extension;

file_put_contents($filePath,$file);
if(file_put_contents($filePath,$file)){
echo json_encode("it worked");
}else{
echo json_encode("it failed");
}

这将成功写入文件。但是文件不起作用,它坏了。

我做错了什么?

最佳答案

您需要使用 base64_decode .

file_put_contents($filePath, base64_decode($file));

请注意,您目前正在两次写入数据。不要。

if (file_put_contents($filePath, base64_decode($file))) {

很好

编辑

还有一点,直接上传二进制文件效率更高,可以跳过base64_decode。像这样:

var xhr  = new XMLHttpRequest(),
data = new FormData();

data.append("file", f); // You don't need to use a FileReader
// append your post fields

// attach your events
xhr.addEventListener('load', function(e) {});
xhr.upload.addEventListener('progress', function(e) {});

xhr.open('POST', '/process/upload.php', true);
xhr.send(data);

您可以查看其余事件here一些 sample here .

关于php - 将二进制字符串保存到从POST发送的php文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com