2015-02-12 1 views
1

Я использую Flask-Uploads для загрузки файла и вывода URL-адреса. Однако по какой-либо причине URL-адрес всегда указывает на 404! Я вижу файл в правильной папке, но URL-адрес, похоже, не сможет его найти. Вот конфигурации я использую ...URL-адрес Flask-Uploads всегда равен 404

UPLOADS_DEFAULT_URL = os.environ.get("UPLOADS_URL", "http://localhost:5000/") 
UPLOADS_DEFAULT_DEST = "app/uploads" 

У меня также есть Настр.загрузки определяется как:

productUploadSet = UploadSet('plist', extensions=('xlsx', 'csv', 'xls')) 

Файл найден в «приложение/добавления/Plist/filename.csv» и я вернусь к URL-адресу, как «http://localhost:5000/productlist/filename.csv», но всякий раз, когда я открываю URL-адрес, он всегда равен 404. Я знаю, что метод url из Flask-Uploads на самом деле не проверяет файл, но я вижу файл на самом деле там. Это как-то не так? Спасибо за любую помощь.

+0

Можете ли вы показать нам представление, которое вы используете для возврата загруженных файлов? – dirn

+0

У меня нет определенного вида, возвращающего загруженные файлы. Flask-Uploads генерирует URL-адрес и возвращает загруженный файл с помощью команды send_from_directory Flask. http://flask.pocoo.org/docs/0.10/patterns/fileuploads/ –

+0

Вы должны использовать 'send_from_directory' в представлении. – dirn

ответ

1

От Flask's guide to uploading files:

Теперь одна последняя вещь отсутствует: сервировка загруженных файлов. По Настой 0,5 мы можем использовать функцию, которая делает это для нас:

from flask import send_from_directory 

@app.route('/uploads/<filename>') 
def uploaded_file(filename): 
    return send_from_directory(app.config['UPLOAD_FOLDER'], 
           filename) 

В качестве альтернативы вы можете зарегистрировать uploaded_file, как правило build_only и использовать SharedDataMiddleware. Это также работает с более старыми версиями Настой:

from werkzeug import SharedDataMiddleware 
app.add_url_rule('/uploads/<filename>', 'uploaded_file', 
       build_only=True) 
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, { 
    '/uploads': app.config['UPLOAD_FOLDER'] 
}) 

Без реализации одного из них, колба не имеет ни малейшего представления о том, как обслуживать загруженные файлы.