所以我设置了一个需要将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();
答案 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);