作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经弄清楚如何使用 AJAX 和 Flask 上传文件,这样页面就不会刷新,并且文件会上传到服务器的某个指定目录中。在 Python 方法 (upload()) 中,我想用一些正则表达式处理文件名并将数组返回到 Javascript 文件。即使我尝试请求一个数组,我是否仍会返回 render_template(index.html)?
HTML (index.html)
<form id="upload-file" role="form" action="sendQuestions" method="post" enctype="multipart/form-data">
<div class="modal-body">
<label for="file"><b>Upload packet here</b></label>
<input type="file" name="file">
<p class="help-block">Upload a .pdf or .docx file you want to read.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="upload-file-btn" type="button" class="btn btn-primary" data-dismiss="modal" value="Upload">Upload</button>
</div>
</form>
Javascript
$(function() {
$('#upload-file-btn').click(function() {
var form_data = new FormData($('#upload-file')[0]);
$.ajax({
type: 'POST',
url: '/uploadajax',
data: form_data,
contentType: false,
cache: false,
processData: false,
async: false,
success: function(data) {
console.log('Success!');
},
});
});
});
python ( flask )
@app.route('/uploadajax', methods=['POST'])
def upload():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return render_template('index.html')
我正在尝试在 $.ajax{} 部分之后在 Javascript 中添加此 AJAX 调用,但我做对了吗?我不确定我是否可以在一个 Javascript 函数中调用同一个 Python 方法两次,或者是否有更好的方法来做到这一点。
ajaxRequest = ajaxFunction()
ajax.onreadystatechange = function() {
if (ajaxRequest.readyState === 4) {
if (ajaxRequest.status === 200) {
alert(ajaxRequest.responseText) //I want the Python to put the array into this ajaxRequest.responseText variable, not sure how.
}
else
alert('Error with the XML request.')
}
}
ajaxRequest.open("GET", 'uploadajax', true);
ajaxRequest.send(null);
有什么帮助吗?谢谢。
最佳答案
你没有说出你想要实现什么(隐藏一些 div,滚动窗口......),这是一个主要问题。总结一下应该做什么:
不要回来
return render_template('index.html')
但是铁。如果您想通知用户有关上传状态的信息,请将此调用的状态设置为
return Response('OK')
或其他状态 - NOTOK 或其他。然后在 js 中:
success: function(data) {
console.log('Success!');
},
操纵响应
if (data == 'OK') {
alert ('YAY, FILE UPLOADED');
};
关于javascript - 使用 AJAX 上传文件、处理并使用 Flask 将结果返回到 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256542/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!