gpt4 book ai didi

jquery - 如何在jquery post函数中指定二进制数据

转载 作者:行者123 更新时间:2023-12-03 22:21:22 26 4
gpt4 key购买 nike

我有二进制字符串的屏幕截图。我想使用 $.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) {
alert('ok');
});

如何将参数指定为附件?

最佳答案

从技术上讲,base64 是二进制数据的文本表示形式 - 如果您对此感到满意,则上述答案是正确的。如果你想发送真正的二进制数据,你必须使用 FormData .

如果我正确地阅读了您的问题,您会将 html“屏幕截图”保存到 Canvas 元素。如果是这样,您应该使用 toBlob 而不是阅读 toDataURL 。这将为您提供我们可以使用 FormData 发送的二进制数据。

var form = new FormData();

form.append('image', blob, 'image.jpg');

以上内容可以使用常规 XMLHttpRequest 发送:

var request = new XMLHttpRequest();

request.open('POST', 'http://foo.com/submitform.php');
request.send(form);

工作示例 -> codepen

如果您查看 chrome 检查器,您将看到创建了正确的多部分请求:

------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 的服务器端处理文件上传的通知。上传的文件在 $_FILES 数组中可用:

<?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);
?>

关于jquery - 如何在jquery post函数中指定二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6954390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com