使用Javascript将我服务器上的远程文件上传到第三方服务器
using Javascript to upload a remote file on my server to a 3rd party server
我使用PHP在我的服务器上创建一个图像文件。现在我需要通过POST上传到第三方服务器。最简单的是使用服务器端cURL脚本来完成,但我必须通过我的客户端来完成,因为它需要在客户端和第三方服务器之间的活动会话上下文中上传。问题是我怎样才能最容易地做到这一点?
-
是否可以使用HTML表单或AJAX调用,并通过给它的URL上传图像?问题是第三方后端不接受url,它需要被表示为好像它是通过web表单上传的…
-
如果这是不可能的,我正在考虑使用AJAX调用来下载图像并将内容保存到一个变量。然后创建一个上传图像内容的表单,就像在表单中选择了一个本地文件一样。我该怎么做呢?
当我通过web表单上传文件并查看正在发送的HTTP标头时,我看到如下内容:
------WebKitFormBoundary3ygta7rqeBm1krBO
Content-Disposition: form-data; name="MAX_FILE_SIZE"
10000000
------WebKitFormBoundary3ygta7rqeBm1krBO
Content-Disposition: form-data; name="uploadedfile"; filename="test.jpg"
Content-Type: image/jpeg
------WebKitFormBoundary3ygta7rqeBm1krBO--
我应该创建一个类似于这种格式的字符串,然后通过AJAX调用作为数据提交吗?我把实际的二值图像数据放在哪里?我猜是Chrome开发者工具屏蔽了这些数据……
我认为最简单的似乎是你说的,通过你的服务器上传到第三方。是否有办法通过PHP脚本从用户会话中获取任何内容?
否则,你可以尝试发送回客户端(也许通过AJAX)在一些编码格式的图像,如base64,在你的服务器已经生成它,然后构建一个自定义的XHR发送文件给第三方…下面是一个示例:
var boundary = this.generateBoundary();
var xhr = new XMLHttpRequest;
xhr.open("POST", this.form.action, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
alert(xhr.responseText);
}
};
var contentType = "multipart/form-data; boundary=" + boundary;
xhr.setRequestHeader("Content-Type", contentType);
for (var header in this.headers) {
xhr.setRequestHeader(header, headers[header]);
}
// here's our data variable that we talked about earlier
var data = this.buildMessage(this.elements, boundary);
// finally send the request as binary data
xhr.sendAsBinary(data);
在这里查看更多信息(在"XMLHttpRequest对象"部分下面):
http://igstan.ro/posts/2009-01-11-ajax-file-upload-with-pure-javascript.html
相关文章:
- Meteor发布/订阅无法从服务器文件夹中运行
- 说明Node.js项目:是否只有一个"服务器文件“;在node.js中
- Jquery AJAX发布变量到服务器文件
- 是否可以在不使用任何 severside 脚本语言的情况下将图像上传到服务器文件夹
- 不断从服务器文件更新 HTML 元素
- 使用 XHR 更新服务器文件并将选项添加到 html 选择
- 如何从 URL 中的节点.js服务器文件夹获取图像
- 使用 ArcGIS JavaScript API 访问服务器文件
- 从服务器文件系统将XML转换为HTML文本区域
- 多个Node.js应用程序;在一个服务器文件的坏做法
- 如何将base64映像存储到数据库和我的服务器文件夹中
- 如何在客户端浏览器中读取服务器文件
- 如何使用PHP从服务器文件夹中检索文件,并使用javascript在网页上显示/下载它
- Base64编码图像主机url或服务器文件路径
- Javascript:跨浏览器的无服务器文件上传和下载
- 通过javascript代码修改服务器文件
- 将结果写入服务器文件
- Netbeans中的服务器文件
- 您可以在没有回调的情况下从模块文件中调用主node.js服务器文件中的函数吗
- 一个node.js服务器文件可以同时用于HTML页面和处理来自该页面的POST请求吗