【发布时间】:2022-01-21 21:18:20
【问题描述】:
我正在使用 Stripe Connect API 编写一段代码,用户可以通过 jQuery 将 input type="file" 的视觉效果发送到 AJAX 调用,这样:
var form_file = new FormData();
form_file.append('file', document.querySelector('input#file_to_send').files[0]);
当用户提交表单时,我通过 PHP 将视觉对象复制到服务器上的文件夹中,并将其名称保存在会话变量中。
如果表单中的某些内容不正确或缺失,用户将返回同一页面,其中视觉对象显示在 input type="file" 元素下的 img 元素中,因此用户知道他们的视觉对象已被考虑在内。
在那之后,我需要再次在 AJAX 调用中发送文件...除了这一次,不能再从 input type="file" 中选择文件,我唯一可以访问的来源就是取它的名字来自 JavaScript 中的 img 元素。
现在,如果我这样做:
var form_file = new FormData();
form_file.append('file', $('img#visual').attr('src'));
并通过相同的 AJAX 调用发送:
$.ajax({
url: 'https://uploads.stripe.com/v1/files',
type: 'POST',
processData: false,
contentType: false,
headers: {'Authorization': 'Bearer xxxxxxxxxxxxxxxxx' },
data: form_file
}).fail(function(e) {
console.log('fail: ' + e);
}).done(function(e) {
console.log('file uploaded: ' + e.id);
});
你猜对了,我的问题是:有没有办法/我应该如何发送文件,而不是从 input 元素作为源发送文件,而是从 img 元素获取定义的路径?
【问题讨论】:
-
我会用 PHP 来做。您的 formData 发送 URL,然后 PHP 将 URL 与 cURL 请求或 file_get_contents() 一起使用。
-
不知道该怎么做...请你画一个小草稿好吗? :-)
标签: javascript jquery ajax post form-data