将Blob对象保存为服务器上的文件

时间:2016-03-16 18:29:26

标签: php jquery magento blob

使用名为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的管理页面。

1 个答案:

答案 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需要一个完整路径作为第二个参数(目标位置),并且该文件夹应该是可写的。