我正在一个上载文件(主要是图像)的系统上工作,并且其中许多文件已损坏:
我们最初认为上传的图像的base64编码的33%的额外大小超出了服务器的上传限制,并且破坏了多余的大小,但是现在我们发现80kb jpeg(和大约2mb .png)已损坏。
我们尝试了以下操作: *限制上传文件的最大大小 *转换为png *将文件保存在服务器上,然后从本地目录上传。
将数据发送到处理上载的文件的文件:
file[key] = input.files[0];
fr[key] = new FileReader();
fr[key].readAsDataURL(file[key]);
fr[key].onload = function(){
var dataURL = fr[key].result;
var base64 = dataURL.replace(/^[^,]*,/, '');
fileName[key] = file[key]['name'];
fileType[key] = file[key]['type'];
$.ajax({
method: "POST",
url: "__URL_TO_PHP_FILE.php",
data: {
user_id: '<?=$_SESSION['user_id']?>',
file_name: fileName[key],
file_type: fileType[key],
content: base64,
label: attachments[key][0]
}
}).done(function( msg ) {
//DO SOMETHING
}
});
};
使用soap处理上传的文件:
$user_id = $_POST['user_id'];
$content = $_POST['content'];
$name = $_POST['file_name'];
$type = $_POST['file_type'];
$label = $_POST['label'];
$xml = '<tag id="'.$user_id.'">
<attachments>
<content>'.$content.'</content>
<filePath>'.$name.'</filePath>
<valid>1</valid>
<label>'.$label.'</label>
<toTypeNode>
</attachments>
</tag>';
$posturl=__URL__;
$response=ConnectToApi($posturl,$xml,"put");
可能是我做错了某些事情,或者是我没有完全理解而导致此问题。
我想防止损坏,而不是使用在线的第三方工具修复图像。
答案 0 :(得分:0)
我们还没有弄清楚导致问题的原因,但是以原始方式提交表单(提交按钮+ action =“ ??。php”)之后,问题似乎消失了,而不是进行了ajax发布请求。在服务器上将文档保存在本地(move_uploaded_files),然后从该本地文件创建base64。
如果有人对造成这种情况的原因有所了解,请随时回复。