如何使用javascript将blob作为文件POST
How to POST blob as a file using javascript?
我有一个表单,其中包含两个输入,一个是用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控制器:
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控制器不会保存它。如果我使用没有脚本的表单,它会将图像转换为blob,效果很好,可以保存文件。
我已经更新了脚本
fd.append('blob', blob.replace("data:image/png;base64,", "")
fd.append('ext', "jpg") // send ext of uploaded file
和php控制器
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;
}
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 如何在php文件中获取$.post-ajax传递的值
- 如何使用post方法从方法上传文件
- AJAX不会在文件上传后重定向到网页-POST方法
- 下载使用POST数据动态生成的文件
- javascript:发送带有音频文件的POST,然后重定向到新页面
- jQuery使用$.post上传文件
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提
- 如何在ajax文件上传中添加额外的POST参数
- Ajax POST返回成功,但没有;t更新JSON文件
- 获取从 .post() 到 PHP 文件的响应,但只能在 MVC 中获取
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- ExtJS 5 - 从 POST servlet 请求下载文件
- 如何使用AJAX将数据POST到php文件
- AJAX请求php获取post/get发送的指定目录中服务器上的文件列表(无JQUERY)
- 我无法以某种方式在数据库中POST文件
- $.post-to-php文件在AmazonEC2中没有'似乎不起作用
- 如何使用Angular将JSON和文件POST到web服务
- 隐藏表单文件POST在javascript
- 如何使用javascript将blob作为文件POST