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