【问题标题】:Upload Blob data to php server, retrieving data from url [duplicate]将 Blob 数据上传到 php 服务器,从 url 检索数据 [重复]
【发布时间】:2014-06-27 05:13:55
【问题描述】:

我正在尝试将图像从移动应用程序上传到 php 服务器,将文件转换为 blob,然后使用 ajax 上传 blob。我用手机拍照后得到图片网址。上传的文件是空的。我认为这应该是读取文件并转换为 blob 时出现的错误。

客户

var blob;
function get(){

var image = document.getElementById('image');
var file=image.src;

var oReq = new XMLHttpRequest();
oReq.open("GET", file, true);
oReq.responseType = "arraybuffer";

oReq.onload = function(oEvent) {
   blob = new Blob([oReq.response], {type: "image/jpg"});
};


oReq.send();


var fd = new FormData();
fd.append("file", blob, "filename.jpg");
$.ajax({
    type: 'POST',
    url: 'http://site/upload.php',
    data: fd,
    processData: false,
    contentType: false
}).done(function(data) {
       alert(data);
});

}

服务器

<?php
$dir="uploads";

file_put_contents($dir."/image.jpg",$_POST['data']);

    echo "Done";  

?>

【问题讨论】:

  • 我看过这篇文章,从中复制了一段代码,但我无法得到结果。也许我应该尝试上传 base 64 编码的图像?

标签: php jquery ajax blob


【解决方案1】:

使用base64图像解决

define('UPLOAD_DIR', 'images/');
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';

【讨论】:

  • 能否请您发布完整的客户端和服务器代码?如何以 URL 格式 blob:chrome-extension://kllkepcdildfdhlnieemaolmnbkafgjc/b7bdfb7a-9153-4c82-a485-48b137091d63 或文件名 b7bdfb7a-9153-4c82-a485-48b137091d63.webm 传递我的 Blob
猜你喜欢
  • 2016-04-04
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多