如何在jquery post函数中指定二进制数据
我的截图是二进制字符串。 我想使用$.post()函数将一些数据发布到服务器 我的代码:如何在jquery post函数中指定二进制数据,jquery,post,upload,binary,Jquery,Post,Upload,Binary,我的截图是二进制字符串。 我想使用$.post()函数将一些数据发布到服务器 我的代码: var filename = "screenshot.jpg": var filedataUrl = "";// string like 'data:image/jpeg;base64,/9j/4A .....' $.post(serverUrl, { title: title name: name /*here must be my file */ }, function(response) {
var filename = "screenshot.jpg":
var filedataUrl = "";// string like 'data:image/jpeg;base64,/9j/4A .....'
$.post(serverUrl, {
title: title
name: name
/*here must be my file */
}, function(response) {
alert('ok');
});
如何将参数指定为附件?您需要做一些事情 首先,需要分解filedataUrl。您只需要base64数据,而不需要其余数据。然后使用base64中的方法将字符串解码为包含二进制数据的变量
然后在post请求中包含该变量。我认为您不能使用文件名上载图像。您可能需要创建一个带有文件输入元素的表单,用户可以在其中选择文件(而不是通过javascript) 然后使用AJAX提交表单。使用
数据
例如:
$.post({
url: serverUrl,
data: {
'fileasstring': filedataUrl
},
success: function(response) {
alert('ok');
}
});
请参阅:从技术上讲,base64是二进制数据的文本表示形式-如果您对此没意见,以上答案是正确的。如果你想发送真正的二进制数据,你必须使用 如果我正确地阅读了您的问题,那么您正在将html“屏幕截图”保存到canvas元素。如果是这样的话,您应该使用。这将为您提供二进制数据,我们可以使用 可以使用常规
XMLHttpRequest
发送上述内容:
var request = new XMLHttpRequest();
request.open('POST', 'http://foo.com/submitform.php');
request.send(form);
工作示例->
如果您查看chrome inspector,您将看到创建了正确的多部分请求:
------WebKitFormBoundaryGWsPW93HnMPQFcXB
Content-Disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryGWsPW93HnMPQFcXB--
您也可以使用jQuery发送上述表格:
$.ajax({
url: 'http://foo.com/submitform.php',
type: 'POST',
data: form,
processData: false,
contentType: false
});
更新
刚才看到了关于用PHP在服务器端处理文件上传的通知。上载的文件在$\u文件数组中可用:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['image']['name']);
if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
echo "File was successfully uploaded.\n";
} else {
echo "Error";
}
echo 'File info:';
print_r($_FILES);
?>
base64
编码图像也是一个普通字符串。您可以将其作为数据
传递给jquerypost
它将如下所示
var filename = "screenshot.jpg":
var filedataUrl = "";// string like 'data:image/jpeg;base64,/9j/4A .....'
$.post(serverUrl, {
title: title,
name: name,
image: filedataUrl,
})
.done(function(res){
alert('ok')
})
我还没有想象。这是浏览器截图。我只需要将其作为文件传递。在这种情况下,最好的选择是将该文件转换为base64并通过ajax发布@Ariel的答案对你来说是合适的。你可能会对这篇文章的答案感兴趣
var filename = "screenshot.jpg":
var filedataUrl = "";// string like 'data:image/jpeg;base64,/9j/4A .....'
$.post(serverUrl, {
title: title,
name: name,
image: filedataUrl,
})
.done(function(res){
alert('ok')
})