我正在嘗試訪問上傳到 Heroku 臨時文件存儲系統(tǒng)的文件。(我知道這些文件僅適用于特定的 dyno)文檔說 /tmp 目錄是上傳到的位置。我相信我的重定向網(wǎng)址端點不正確:.pyUPLOAD_FOLDER_FACES = '/app/tmp/'app.config['UPLOAD_FOLDER_FACES'] = UPLOAD_FOLDER_FACES@app.route("/AddFace", methods=["GET", "POST"])def add_face(): if 'image' not in request.files: flash('No file part') return redirect(request.url) file = request.files['image'] if file.filename == '': flash('No image selected for uploading') return redirect(request.url) if file and allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER_FACES'], filename)) flash('Face successfully uploaded, saved and displayed') return render_template('addface.html', filename=filename) else: flash('Allowed image types are -> png, jpg, jpeg, gif') return redirect(request.url) return render_template("addface.html")@app.route('/displayfaces/<filename>')def display_image_face(filename): # print('display_image filename: ' + filename) return redirect(url_for('app', filename='tmp/' + filename), code=301) <-----error超文本標記語言{% if filename %} <div> <img src="{{ url_for('display_image_face', filename=filename) }}"> </div>{% endif %}我使用 bash 探索了 heroku 上的文件結(jié)構(gòu):C:\Flask\app>heroku run bash --app faces-applicationRunning bash on ? faces-application... up, run.3918 (Free)~ $ lsAptfile forms.py gui.py Procfile requirements.txt runtime.txt static templates~ $ pwd/app~ $ cd ../ $ lsapp bin dev etc lib lib64 lost+found proc sbin sys tmp usr var/ $ pwd// $ cd var/var $ lslib log tmp/var $ pwd/var這也沒有取得成功的結(jié)果。Heroku 上傳與哪個 /tmp 關聯(lián)? 我想知道我是否需要在 /app/ 中創(chuàng)建一個 tmp 目錄,因為 Heroku 沒有創(chuàng)建它?或者 Heroku 使用 '/' tmp 目錄還是 /var/ tmp 目錄?
1 回答

慕容森
TA貢獻1853條經(jīng)驗 獲得超18個贊
這實際上是兩個獨立的問題,但我想我可以幫助解決這兩個問題:
werkzeug.routing.BuildError:無法使用值 ['filename'] 為端點“app”構(gòu)建 url。您的意思是“添加”嗎?
對于此錯誤,您需要了解該函數(shù)app
不存在。所以 Flask 不知道該怎么辦。
return?send_from_directory(app.config['UPLOAD_FOLDER'],?filename)
對于 S3 錯誤,您必須知道文件對象的行為就像舊的錄音帶:一旦讀取,您需要將其倒回到開頭
我想這段代碼可以解決問題:
s3 = boto.connect_s3()
bucket = s3.get_bucket("facesappstorage")
key = bucket.new_key(filename)
# Have a look here
file.seek(0)
key.set_contents_from_file(file, headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None)
添加回答
舉報
0/150
提交
取消