javascript - Javascript Ajax 上传文件到 Python 后端
问题描述
我被困住了如何使我的代码工作,我正在尝试使用 javascript 将文件上传到我的 python 代码。
这是我的 HTML
<div class="form-group">
<label for="upload_list" class="control-label">Upload List</label>
<input name="upload_list" id="upload_list" type="file" class="form-control" multiple="true" />
</div>
<a id="make_order" role="button" class="btn btn-primary" href="#">
这是我处理上传的 JS。
$("a#make_rfq_order").bind("click", function(ev) {
var customer_upload_list = $('#upload_list').val();
ajax.jsonRpc('/shop/order', 'call', {
'upload_list': customer_upload_list
});
});
这里是我的python代码
def customer_order(self, **post):
if post.get('upload_list'):
.....
if order and order.id:
.....
if post.get('upload_list'):
.....
values.update({
'name': '{0}_{1}'.format('file', upload_list.filename),
})
order.write(values)
return True
如果我使用'name': '{0}_{1}'.format('file', upload_list),
它的工作,但只处理文件名,
如何获取提交到我的服务器的实际文件?...
解决方案
我无法发表评论,所以我尽我所能回答,但了解更多关于您的 python 服务器会有所帮助(您是使用特定框架还是从头开始编写自己的 python 服务器等... )
我认为您发送的是文件的路径,而不是文件本身的这部分:
var customer_upload_list = $('#upload_list').val();
请尝试以下方法:
var file = $('#upload_list').get(0).files[0];
此外,您似乎正在尝试包括对多个文件的支持。您是否尝试过通过迭代选定的文件并将 FormData 添加到 POST 来构建 FormData?
这样的事情可能会奏效,或者至少让你朝着正确的方向前进:
var files = new FormData();
for(var i=0;i< $('#upload_list').val().length;i++){
var file = $('#upload_list').get(0).files[i];
files.append('files[]', file);
}
$.ajax({
url: 'upload.php',
type: 'POST',
data: files
});
接收到的数据将在服务器端以列表形式出现,因此请记住更改代码以查找列表。
您可能需要在 POST 中使用其他参数,例如 contentType 和 dataType 或 processData,但我认为以上内容足以获得结果
推荐阅读
- php - 检查两个数组是否有相同的值
- java - 收缩数组在 Java 中维护数字分布
- qt - 向 QML 布局添加边距
- .net-core - .Net Core 1.1 程序集中的重复类型名称
- java - 如何在spring数据mongo db中聚合一个嵌套对象并避免PropertyReferenceException?
- c# - 在本地运行单元测试时缺少文件
- r - 将当前数据框重塑为另一个数据框并创建新列(连接)
- node.js - 如何使用谷歌语音从长音频中获取文本到文本 node.js
- ruby - Ruby mediainfo(gem)错误“mon超出范围”?
- c++ - 如果同时运行,BIGSERIAL 事务是否安全?(PostgreSQL,libpqxx)