javascript - 如何使用 javascript 将 blob 作为文件发布?

标签 javascript php

我有一个表单,其中包含两个输入,一个输入隐藏为 name="action",第二个输入隐藏为 name="avatar"type="file"。 用户在头像输入中选择文件后,图像将转换为 blob。 如何发布 Blob,就像它作为文件加载并提交后一样?

表格:

<form enctype="multipart/form-data" method="post" id="avatarform">
    <input type="hidden" name="action" value="save" />
    <input id="coolButton" name="avatar" type="file" accept="image/*" class="form-control" placeholder="">
</form>

我已经尝试过:

var fd = new FormData();
fd.append('action', 'save');
fd.append('avatar', file.name);
fd.append('data', blob);

$.ajax({
    type: 'POST',
    url: '/',
    data: fd,
    processData: false,
    contentType: false
}).done(function(data) {
       console.log(data);
});

PHP Controller :

    if ($_FILES['avatar']['name']) {
        if ($profile->avatar==1) {
            unlink('/images/avatars/'.$profile->avatar);
            $profile->avatar=0;
        }
        $filename="avatar_".$user_id.'.'.pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION);
        move_uploaded_file($_FILES['avatar']['tmp_name'],$_SERVER['DOCUMENT_ROOT'] ."/images/avatars/".$filename);
        $profile->avatar=$filename;
    }   

但是 php Controller 不保存它。如果我使用不带脚本的表单将图像转换为 blob - 它效果很好并保存文件。

最佳答案

我已经更新了脚本

fd.append('blob', blob.replace("data:image/png;base64,", "")
fd.append('ext', "jpg") // send ext of uploaded file

和 php Controller

    if ($_POST['blob']) {
        if ($profile->avatar==1) {
            unlink('/images/avatars/'.$profile->avatar);
            $profile->avatar=0;
        }
        $file = base64_decode($_POST['blob']);
        $filename="avatar_".$user_id.'.'.$_POST['ext'];
        file_put_contents($_SERVER['DOCUMENT_ROOT'] ."/images/avatars/".$filename, $file);
        $profile->avatar=$filename;
    }

关于javascript - 如何使用 javascript 将 blob 作为文件发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38630690/

相关文章:

javascript - ExtJS:如何在window.onpopstate中调用 Controller ?

javascript - typeof 运算符未按预期运行

php - 似乎无法正确使用 PHP 命名空间

php - 更新另一个表中的表 where 条件

php - 检查 youtube 是否有新视频的脚本

javascript - JQuery Mobile 选择框不起作用

javascript - 有没有更简单/更干净的方法来写这个?

javascript - 将 JavaScript 日期发送到 PHP 后端的最佳格式是什么?

php - 查询字符串和 Mod 重写

javascript - 根据从数据库获取的值打开表单