tutorial说明了如何使用Bottle和常规HTML格式上传文件。但是,如何通过jquery AJAX调用将文件上传到服务器?
的HTML
<form id="uploadForm">
file: <input id="fileData" type="file" name="upload" />
<input type="submit" value="Start upload" />
</form>
jQuery的
$("#uploadForm").submit(function(event) {
event.preventDefault();
$.ajax(
{
Type: "POST",
contentType: false,
url: "../upload",
data: //What do i pass here?,
success: function (data) {
alert(data);
}
});
})
蟒蛇瓶
@app.route('/upload', method='POST')
def do_upload():
upload = bottle.request.files.query('upload')
sys.stdout.write(bottle.request.files.get('upload').filename);
name, ext = os.path.splitext(upload.filename)
inputfile = open('/srv/http/params/%s'%upload.filename, 'wb')
inputfile.write(upload.file.read())
inputfile.close()
return 'OK'
我主要停留在应该传递给AJAX调用的数据以及以后如何在Bottle侧检索这些数据的问题上。
最佳答案
对于受支持的浏览器,您将传递一个formData对象,因为您无法直接从输入值上传文件:
$("#uploadForm").submit(function(event) {
event.preventDefault();
var data = new formData(this);
$.ajax({
type : "POST",
url : "../upload",
data : data,
contentType : false,
processData : false
}).done(function (data) {
alert(data);
});
});
对于不支持的浏览器,您需要以某种方式通过iFrame提交表单
关于jquery - 使用AJAX用Bottle上传文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20360581/