如何使用 jsonp 将图像发送到服务器?
How can I send an image using jsonp to a server?
我正在开发应用程序并使用 Javascript 的方法 'jsonp' 向 php 和 MYSQL 服务器发送和获取数据,因为应用程序不是在我保存数据的同一台服务器上。
我可以使用与 jsonp 相同的方法将图像发送到该服务器吗,
喜欢对其进行编码或使用二进制或其他东西?
您无法使用 jsonp 流式传输图像。
你有两个选择使用iframe trick:
或者你可以使用 websockets
如果您将图像 base 64 编码为 json 字符串图像,您将受到文件大小的限制。
您可以对图像进行 base64 编码并将其作为字符串发送。你会在客户端做一些事情:
var the_file = new Blob([window.atob(base_64_string)], { type: 'image/png', encoding: 'utf-8' });
var fr = new FileReader();
fr.onload = function (oFREvent) {
var v = oFREvent.target.result.split(',')[1];
v = atob(v);
var good_b64 = btoa(decodeURIComponent(escape(v)));
img.src = "data:image/png;base64," + good_b64;
img.onload = function () {
//do stuff here
};
};
fr.readAsDataURL(the_file);
正如@SLaks 在他的评论中暗示的那样,考虑使用 CORS header 作为端点而不是 jsonp,但这不是必需的。
不确定您的用例是什么,但为什么不对图像使用 link?
我正在开发应用程序并使用 Javascript 的方法 'jsonp' 向 php 和 MYSQL 服务器发送和获取数据,因为应用程序不是在我保存数据的同一台服务器上。
我可以使用与 jsonp 相同的方法将图像发送到该服务器吗, 喜欢对其进行编码或使用二进制或其他东西?
您无法使用 jsonp 流式传输图像。 你有两个选择使用iframe trick:
或者你可以使用 websockets
如果您将图像 base 64 编码为 json 字符串图像,您将受到文件大小的限制。
您可以对图像进行 base64 编码并将其作为字符串发送。你会在客户端做一些事情:
var the_file = new Blob([window.atob(base_64_string)], { type: 'image/png', encoding: 'utf-8' });
var fr = new FileReader();
fr.onload = function (oFREvent) {
var v = oFREvent.target.result.split(',')[1];
v = atob(v);
var good_b64 = btoa(decodeURIComponent(escape(v)));
img.src = "data:image/png;base64," + good_b64;
img.onload = function () {
//do stuff here
};
};
fr.readAsDataURL(the_file);
正如@SLaks 在他的评论中暗示的那样,考虑使用 CORS header 作为端点而不是 jsonp,但这不是必需的。
不确定您的用例是什么,但为什么不对图像使用 link?