应用程序已成功推送到 heroku,但如何正确引用文件名以便它像在本地主机中一样在线工作
App pushed to heroku successful but how to reference filenames correctly so it work online as it did in localhost
所以,我已经成功将我的应用程序推送到 Heroku 并且它打开了!
faces-application 但现在上传和功能都坏了。
我几乎可以肯定我引用文件名的方式是问题,现在它不在我的本地主机上。
UPLOAD_FOLDER_FACES = 'static/uploads/faces/'
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)
# I think the issue is here, how I am saving the file and handling it.
# If someone could please share some insight into the correct way to
# handle files in heroku hosted python flask apps.
file.save(os.path.join(app.config['UPLOAD_FOLDER_FACES'], filename))
copyfile("static/uploads/faces/" + filename, "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")
2020-08-24T16:54:47.951941+00:00 app[web.1]: [2020-08-24 16:54:47,949] ERROR in app: Exception on /NameTag [GET]
2020-08-24T16:54:47.951955+00:00 app[web.1]: Traceback (most recent call last):
2020-08-24T16:54:47.951956+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
2020-08-24T16:54:47.951957+00:00 app[web.1]: response = self.full_dispatch_request()
2020-08-24T16:54:47.951957+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-08-24T16:54:47.951958+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-08-24T16:54:47.951958+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-08-24T16:54:47.951959+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-08-24T16:54:47.951959+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-08-24T16:54:47.951960+00:00 app[web.1]: raise value
2020-08-24T16:54:47.951961+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-08-24T16:54:47.951961+00:00 app[web.1]: rv = self.dispatch_request()
2020-08-24T16:54:47.951961+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
2020-08-24T16:54:47.951962+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-08-24T16:54:47.951963+00:00 app[web.1]: File "/app/gui.py", line 194, in name
2020-08-24T16:54:47.951963+00:00 app[web.1]: images = os.listdir(os.path.join(app.static_folder, "nametag"))
2020-08-24T16:54:47.951969+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: '/app/static/nametag'
我是否需要构建我的应用程序以便所有内容都位于 /app/ 中?
我更改了项目结构并创建了一个新版本。推送到 Heroku,应用程序像以前一样打开。
但是,我仍然收到未找到文件错误。
我修改了引用以包含 app/
UPLOAD_FOLDER_FACES = '/app/static/uploads/faces/'
但此错误仍然存在:
2020-08-25T08:30:26.942622+00:00 app[web.1]: [2020-08-25 08:30:26,940] ERROR in app: Exception on /AddFace [POST]
2020-08-25T08:30:26.942634+00:00 app[web.1]: Traceback (most recent call last):
2020-08-25T08:30:26.942635+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
2020-08-25T08:30:26.942635+00:00 app[web.1]: response = self.full_dispatch_request()
2020-08-25T08:30:26.942636+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-08-25T08:30:26.942636+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-08-25T08:30:26.942637+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-08-25T08:30:26.942637+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-08-25T08:30:26.942637+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-08-25T08:30:26.942638+00:00 app[web.1]: raise value
2020-08-25T08:30:26.942638+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-08-25T08:30:26.942638+00:00 app[web.1]: rv = self.dispatch_request()
2020-08-25T08:30:26.942638+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
2020-08-25T08:30:26.942639+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-08-25T08:30:26.942639+00:00 app[web.1]: File "/app/gui.py", line 139, in add_face
2020-08-25T08:30:26.942640+00:00 app[web.1]: file.save(os.path.join(app.config['UPLOAD_FOLDER_FACES'], filename))
2020-08-25T08:30:26.942640+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/datastructures.py", line 3066, in save
2020-08-25T08:30:26.942640+00:00 app[web.1]: dst = open(dst, "wb")
2020-08-25T08:30:26.942646+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: '/app/static/uploads/faces/Bret_Point.jpg'
2020-08-25T08:30:26.943461+00:00 app[web.1]: 10.32.185.71 - - [25/Aug/2020:08:30:26 +0000] "POST /AddFace HTTP/1.1" 500 290 "https://faces-application.herokuapp.com/AddFace" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0"
static/sample/ 中的图像在相应页面上成功加载。
但是当试图上传图片使用时,找不到文件。
我一直在读到 Heroku 使用 /tmp/ 进行上传....
需要上传到tmp/目录吗?
解决方案:
要在 heroku 上使用 temporary/ephemiral 存储,您必须引用 /tmp 作为上传目标。
UPLOAD_FOLDER_FACES = '/tmp/'
将引用(如上所示)从 app/static/... 修改为 /tmp/ 成功了!但是后面的copy指令却没有。
copyfile("/tmp/" + filename, "tmp/faces/" + filename)
我想如果可以将文件添加到 tmp 目录,他们也应该能够将目录添加到 tmp。在我尝试复制文件之前,我可能需要先在 tmp 中创建 faces 目录,这就是为什么我收到有关该行的错误。
然而,要访问 Heroku 部署的应用程序上的临时存储,请使用
/tmp/
所以,我已经成功将我的应用程序推送到 Heroku 并且它打开了! faces-application 但现在上传和功能都坏了。
我几乎可以肯定我引用文件名的方式是问题,现在它不在我的本地主机上。
UPLOAD_FOLDER_FACES = 'static/uploads/faces/'
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)
# I think the issue is here, how I am saving the file and handling it.
# If someone could please share some insight into the correct way to
# handle files in heroku hosted python flask apps.
file.save(os.path.join(app.config['UPLOAD_FOLDER_FACES'], filename))
copyfile("static/uploads/faces/" + filename, "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")
2020-08-24T16:54:47.951941+00:00 app[web.1]: [2020-08-24 16:54:47,949] ERROR in app: Exception on /NameTag [GET]
2020-08-24T16:54:47.951955+00:00 app[web.1]: Traceback (most recent call last):
2020-08-24T16:54:47.951956+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
2020-08-24T16:54:47.951957+00:00 app[web.1]: response = self.full_dispatch_request()
2020-08-24T16:54:47.951957+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-08-24T16:54:47.951958+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-08-24T16:54:47.951958+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-08-24T16:54:47.951959+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-08-24T16:54:47.951959+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-08-24T16:54:47.951960+00:00 app[web.1]: raise value
2020-08-24T16:54:47.951961+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-08-24T16:54:47.951961+00:00 app[web.1]: rv = self.dispatch_request()
2020-08-24T16:54:47.951961+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
2020-08-24T16:54:47.951962+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-08-24T16:54:47.951963+00:00 app[web.1]: File "/app/gui.py", line 194, in name
2020-08-24T16:54:47.951963+00:00 app[web.1]: images = os.listdir(os.path.join(app.static_folder, "nametag"))
2020-08-24T16:54:47.951969+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: '/app/static/nametag'
我是否需要构建我的应用程序以便所有内容都位于 /app/ 中?
我更改了项目结构并创建了一个新版本。推送到 Heroku,应用程序像以前一样打开。
但是,我仍然收到未找到文件错误。
我修改了引用以包含 app/
UPLOAD_FOLDER_FACES = '/app/static/uploads/faces/'
但此错误仍然存在:
2020-08-25T08:30:26.942622+00:00 app[web.1]: [2020-08-25 08:30:26,940] ERROR in app: Exception on /AddFace [POST]
2020-08-25T08:30:26.942634+00:00 app[web.1]: Traceback (most recent call last):
2020-08-25T08:30:26.942635+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
2020-08-25T08:30:26.942635+00:00 app[web.1]: response = self.full_dispatch_request()
2020-08-25T08:30:26.942636+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-08-25T08:30:26.942636+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-08-25T08:30:26.942637+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-08-25T08:30:26.942637+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-08-25T08:30:26.942637+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-08-25T08:30:26.942638+00:00 app[web.1]: raise value
2020-08-25T08:30:26.942638+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-08-25T08:30:26.942638+00:00 app[web.1]: rv = self.dispatch_request()
2020-08-25T08:30:26.942638+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
2020-08-25T08:30:26.942639+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-08-25T08:30:26.942639+00:00 app[web.1]: File "/app/gui.py", line 139, in add_face
2020-08-25T08:30:26.942640+00:00 app[web.1]: file.save(os.path.join(app.config['UPLOAD_FOLDER_FACES'], filename))
2020-08-25T08:30:26.942640+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/datastructures.py", line 3066, in save
2020-08-25T08:30:26.942640+00:00 app[web.1]: dst = open(dst, "wb")
2020-08-25T08:30:26.942646+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: '/app/static/uploads/faces/Bret_Point.jpg'
2020-08-25T08:30:26.943461+00:00 app[web.1]: 10.32.185.71 - - [25/Aug/2020:08:30:26 +0000] "POST /AddFace HTTP/1.1" 500 290 "https://faces-application.herokuapp.com/AddFace" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0"
static/sample/ 中的图像在相应页面上成功加载。
但是当试图上传图片使用时,找不到文件。
我一直在读到 Heroku 使用 /tmp/ 进行上传....
需要上传到tmp/目录吗?
解决方案:
要在 heroku 上使用 temporary/ephemiral 存储,您必须引用 /tmp 作为上传目标。
UPLOAD_FOLDER_FACES = '/tmp/'
将引用(如上所示)从 app/static/... 修改为 /tmp/ 成功了!但是后面的copy指令却没有。
copyfile("/tmp/" + filename, "tmp/faces/" + filename)
我想如果可以将文件添加到 tmp 目录,他们也应该能够将目录添加到 tmp。在我尝试复制文件之前,我可能需要先在 tmp 中创建 faces 目录,这就是为什么我收到有关该行的错误。
然而,要访问 Heroku 部署的应用程序上的临时存储,请使用
/tmp/