通过AJAX从其他服务器上传JavaScript图像
我正在尝试(如果可能的话)使用AJAX请求通过JavaScript(允许jQuery)上传存储在另一个站点(而不是计算机上)上的图像。
让我们说我们有图像http://example.com/a.jpg
。 我需要发出一个AJAX请求,将此图像提交到http://test.com/process.php
。
- 我无法编辑文件
process.php
来接受除有效上传文件之外的任何内容。 - 浏览器支持并不重要。
这有可能吗? 由于安全问题,我们无法动态填充文件字段,因此可能是另一种发送文件而无需用户选择文件的方法。
我想我应该使用FormData
,不确定。
//接收文件
var url = "http://example.com/a.jpg" var oReq = new XMLHttpRequest(); oReq.onload = function(e) { var blobData = oReq.response; // not responseText // Sending data. var formData = new FormData(); // JavaScript file-like object var blob = new Blob([blobData], { type: "image/jpeg"}); formData.append("webmasterfile", blob); var request = new XMLHttpRequest(); request.open("POST", "http://test.com/process.php"); request.send(formData); } oReq.open("GET", url, true); oReq.responseType = "blob"; oReq.send();
资源:
https://developer.mozilla.org/en-US/docs/Web/API/FormData/append
https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
让我们说example.com向用户展示了许多图像。
- 用户单击图像
- GET请求被发送到服务器(包含“图像”参数)
- 服务器向test.com发出POST请求
因此, 如果您使用PHP编写服务器代码,您的代码应如下所示(或类似内容):
$file); curl_setopt($ch, CURLOPT_URL, 'http://test.com/process.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ?>