使用ajax将.bs文件中的blob发送到php

时间:2014-05-20 19:56:38

标签: javascript php jquery ajax blob

所以我设置了一个需要将blob变量发送到php页面的页面。 php页面然后使用pdo将blob上传到mysql。我设置了ajax,因此它只发送一个文本变量并上传它就好了。但是,当我尝试做一个blob时,它将无法工作。

主页

    var blob = new Blob(["i am a blob"]);

   $.ajax({

      type: 'POST',
      url: 'test.php',
      data: {roll: blob},
    });

Php page

$got = $_POST['roll']; //gets the variable

$pdo = new PDO('mysql:host='. $host .';dbname='.$db_name, $db_username, $db_password);
    $query = $pdo->prepare('INSERT INTO books (test,rec) VALUES (?,?)'); 
    $query->bindValue(1, '35');
    $query->bindValue(2, $rollv);
    $query->execute();

2 个答案:

答案 0 :(得分:0)

目前,JavaScript不是处理二进制数据的最佳语言。它正在得到广泛的改进,但仅限于现代浏览器(最值得注意的是,只有IE10 +和移动支持有时是部分的)。

如上所述,使用XHR2(browser support)可以发送二进制数据。使用XHR2非常简单,你可以在这里阅读一篇非常好的文章:http://www.html5rocks.com/en/tutorials/file/xhr2/。 如果你真的需要使用jQuery来管理异步请求,那么你需要使用FormData和这里解释的技巧:https://stackoverflow.com/a/13333478/192024

PS:小心将blob数据存储到MySQL数据库中,因为有时会出现问题,尤其是对于大文件!

答案 1 :(得分:-2)

你可以尝试这样的事情。

var data;
var blob = new Blob(["i am a blob"]);

var reader  = new FileReader();

reader.onloadend = function () {
    data = reader.result;

    $.ajax({
      type: 'POST',
      url: 'test.php',
      data: {roll: data},
    });
}

reader.readAsDataURL(blob);