Я новичок в Python Flask.Хотя я выполнял эту задачу несколько раз в PHP / Java, я как-то застрял здесь.
Моя задача - загрузить изображение на сервер, затем отобразить изображение на веб-странице, выполнить некоторую обработку изображения иснова отобразите обработанное изображение на клиентском компьютере.
Для этого я использую код в flask-fileupload-ajax-example на Github.Я могу правильно показать имя файла и его размер, используя ajax на веб-странице.Но почему-то, когда я пытаюсь установить тег src
из <img>
по пути загруженных изображений, он дает 404, File not found error
.
Ниже приведены соответствующие фрагменты кода.
В app.py
@app.route('/uploadajax', methods=['POST', 'GET'])
def upldfile():
if request.method == 'POST':
files = request.files['file']
print(files)
if files and allowed_file(files.filename):
filename = secure_filename(files.filename)
app.logger.info('FileName: ' + filename)
print('FileName: ' + filename)
updir = os.path.join(basedir, 'upload/')
files.save(os.path.join(updir, filename))
file_size = os.path.getsize(os.path.join(updir, filename))
file_path = '/'.join(['upload', filename])
return jsonify(name=filename, path=file_path, size=file_size)
В app.js
файле:
$('#submit').click(function() {
event.preventDefault();
var form_data = new FormData($('#uploadform')[0]);
$.ajax({
type: 'POST',
url: '/uploadajax',
data: form_data,
contentType: false,
processData: false,
dataType: 'json'
}).done(function(data, textStatus, jqXHR){
console.log(data);
console.log(textStatus);
console.log(jqXHR);
console.log('Success!');
$("#resultFilename").text(data['name']); // name of the file
$("#resultFilesize").text(data['size']); // size of the file
//my_url = "{{ url_for('upload', filename="+data['name']+" }}";
$("#image").attr('src', data['path']); // setting the src attribute of img tag
$("#adv-btn").attr('value', data['name']);
$("#adv-btn").show();
//get_image(data['name'])
}).fail(function(data){
alert('error!');
});
});
Я также пытался использовать url_for
, но он не обрабатывается.Любое предложение будет высоко оценено.Спасибо.