使用名为cropper的jQuery插件,我能够将裁剪后的图像检索为blob对象。现在我需要将这个blob对象保存为我服务器上的文件。代码是:
$('#image').cropper('getCroppedCanvas').toBlob(function (blob) {
var formData = new FormData();
formData.append('croppedImage', blob);
formData.append('form_key', window.FORM_KEY);
$.ajax('/upload.php', {
method: "POST",
data: formData,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
});
这是我的upload.php:
<?php
$blob = $_POST['croppedImage'];
//return $blob;
file_put_contents('/media/crop_products/test.png', $blob);
?>
它不会将其保存在服务器上。我在这里做什么?此请求来自magento的管理页面。
答案 0 :(得分:5)
由于您使用contentType:false
发送数据,因此可以$_FILES
访问该数据,而不是$_POST
。
评论交流确认了这一点。
您的$_FILES
数组是(根据评论):
[_FILES] => Array (
[file] => Array (
[name] => blob
[type] => image/png
[tmp_name] => /tmp/phpC9g8rU
[error] => 0
[size] => 1062301
)
)
上传它:
move_uploaded_file(
$_FILES['file']['tmp_name'],
$_SERVER['DOCUMENT_ROOT'] . "/media/crop_products/test.png"
);
注意:move_uploaded_file
需要一个完整路径作为第二个参数(目标位置),并且该文件夹应该是可写的。