我学习烧瓶中,我试图通过这里记录的上传文件模式工作:http://flask.pocoo.org/docs/patterns/fileuploads/.我在Windows 7上使用Firefox 12,并且在本地计算机上以调试模式运行我的应用程序.
我正在逐字复制示例,除了我定义的UPLOAD_FOLDER变量的值,UPLOAD_FOLDER = '/uploads'
并创建了一个名为"uploads"的目录,该目录存在于应用程序根目录中(以及静态和模板目录).
上传文件后,我收到错误: IOError: [Errno 2] No such file or directory: '/uploads\\u.png'
有趣的是,如果我为uploads文件夹指定一个原始字符串,它直接指向我的机器上的上传,就像UPLOAD_FOLDER = r'C:\Python27\projects\Flask\myproject\uploads'
一切正常.
我没有以正确的方式指定目录吗?上传目录应该放在其他地方吗?
当我上传新文件时,它会保存到应用程序根文件夹,即使我指定了不同的文件UPLOAD_FOLDER
.为什么配置不起作用?
views.py
:
from flask import render_template
from flask import request, redirect, url_for,flash
from werkzeug.utils import secure_filename
from app import app
import os
APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLD = '/Users/blabla/Desktop/kenetelli/htmlfi'
UPLOAD_FOLDER = os.path.join(APP_ROOT, UPLOAD_FOLD)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def tmrf():
return render_template('main.html')
@app.route('/uploader', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
return 'file uploaded successfully'
Run Code Online (Sandbox Code Playgroud)
__init__.py
:
from flask import Flask
UPLOAD_FOLDER = ''
ALLOWED_EXTENSIONS = set('*.doc')
app = Flask(__name__)
app.config.from_object('config')
from app import views
Run Code Online (Sandbox Code Playgroud) 我将nltk数据下载到我的Flask应用程序的数据目录中.视图位于与数据目录相同级别的另一个目录中的蓝图中.在视图中,我正在尝试设置数据的路径,但它不起作用.
nltk.data.path.append('../nltk_data/')
Run Code Online (Sandbox Code Playgroud)
这不起作用.如果我使用整个路径,它确实有效.
nltk.data.path.append('/home/username/myapp/app/nltk_data/')
Run Code Online (Sandbox Code Playgroud)
为什么第一种形式不起作用?如何正确引用数据的位置?