我陷入了如何使代码正常工作的问题,我试图使用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),
来工作,但只能处理文件名,
如何将实际文件提交到我的服务器?...
答案 0 :(得分:0)
我无法发表评论,所以我会尽我所能回答,但是对您的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,但我认为以上内容足以获取结果