我试图在javascript中为静态文件夹插入以下静态URL,以便它可以正确加载已保存的文件,但我仍然面临错误。
以下是发生的事情。
普通文件位置为http://localhost/static/uploads/filename.ext但是使用以下javascript,它会根据视图获取位置' url_prefix =' /媒体'因此它提取的网址是http://localhost/media/static/uploads/filename.ext
这是以下代码:
<script>
$(function(){
$('#fileupload').fileupload({
url: 'upload',
dataType: 'json',
add: function (e, data) {
data.submit();
},
success:function(response,status) {
console.log(response.filename);
var filePath = 'static/uploads/' + response.filename;
$('#imgUpload').attr('src',filePath);
$('#filePath').val(filePath);
console.log('success');
},
error:function(error){
console.log(error);
}
});
})
我想替换,
var filePath = 'static/uploads/' + response.filename;
带
var filePath = {{ url_for('static', filename='/uploads/') }} + response.filename;
但没有成功。原始文件名设置会导致蓝图url_prefix,我想绕过它。
这是我的观点
@media.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
file = request.files['file']
extension = os.path.splitext(file.filename)[1]
f_name = str(uuid.uuid4()) + extension
file.save(os.path.join(app.config['UPLOAD_FOLDER'], f_name))
return json.dumps({'filename':f_name})
答案 0 :(得分:1)
这里有两条路可供考虑,你需要密切关注你在哪里使用:
/opt/myapp/media/upload/<filename>
和https://localhost/static/upload/<filename>
您最简单的解决方案可能是简单地返回文件名,而不使用任何目录前样本,然后为您使用它的上下文添加相应的目录。
所以在python中你仍然可以返回&#39; somefile.jpg&#39;用:
return json.dumps({'filename': f_name})
在javascript中你可以参考&#39; /static/uploads/somefile.jpg'用:
var filepath = '/static/uploads/' + response.filename;
答案 1 :(得分:0)
好吧,我已经解决了这个问题,我已经删除了url_prefix参数,所以我可以从根URL路径调用。避免上一期。