Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask上载映像仅在本地主机上工作,而不在联机服务器上工作_Python_Flask - Fatal编程技术网

Python Flask上载映像仅在本地主机上工作,而不在联机服务器上工作

Python Flask上载映像仅在本地主机上工作,而不在联机服务器上工作,python,flask,Python,Flask,大家好。我有一个小问题,上传图像使用烧瓶。我可以在localhost中的flask上上载图像(web应用程序托管在我的桌面上)。但当我在在线服务器上加载flask应用程序时,我总是遇到“FileNotFoundError”。我还将权限更改为777,但仍然无法工作 下面是html上传代码 <form name="edit_vehicle_info" action="/vehicle_info_form/" method="POST" enctype="multipart/form-data"

大家好。我有一个小问题,上传图像使用烧瓶。我可以在localhost中的flask上上载图像(web应用程序托管在我的桌面上)。但当我在在线服务器上加载flask应用程序时,我总是遇到“FileNotFoundError”。我还将权限更改为777,但仍然无法工作

下面是html上传代码

<form name="edit_vehicle_info" action="/vehicle_info_form/" method="POST" enctype="multipart/form-data" class="formfield">
    <div class="form-group">
    <label for="changeVehicleImg">Vehicle Image</label>
    <input type="file" id="changeVehicleImg" name="changeVehicleImg" accept="image/*">
</div>
#vehicle_info_form
@app.route('/vehicle_info_form/', methods=['GET', 'POST'])
def vehicle_info_form():
    try:
        if request.method == "GET":
            return render_template(
                'vehicleInfo.html'
            )

        elif request.method == "POST":
            inputVehicleImg = request.files['changeVehicleImg']
            if inputVehicleImg.filename == "":
                inputVehicleImg_filename = ""
            else:
                print(inputVehicleImg.filename)
                print(app.config['UPLOAD_FOLDER_IMG_VEHICLE'])
                inputVehicleImg_filename = secure_filename(inputVehicleImg.filename)
                inputVehicleImg.save(os.path.join(app.config['UPLOAD_FOLDER_IMG_VEHICLE'], inputVehicleImg_filename))
            print ('success')
    except Exception as e:
        print(e)
        return redirect(url_for('vehicle_info_form'))

python上传代码可以打印
inputVehicleImg.filename
app.config['upload\u FOLDER\u IMG\u VEHICLE']
,然后发生错误

这里是错误

Traceback (most recent call last):
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
    return self.finalize_request(rv)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1632, in finalize_request
    response = self.process_response(response)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 1858, in process_response
    self.save_session(ctx.session, response)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/app.py", line 924, in save_session
    return self.session_interface.save_session(self, session, response)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/sessions.py", line 363, in save_session
    val = self.get_signing_serializer(app).dumps(dict(session))
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/itsdangerous/serializer.py", line 166, in dumps
    payload = want_bytes(self.dump_payload(obj))
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/itsdangerous/url_safe.py", line 42, in dump_payload
    json = super(URLSafeSerializerMixin, self).dump_payload(obj)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/itsdangerous/serializer.py", line 133, in dump_payload
    return want_bytes(self.serializer.dumps(obj, **self.serializer_kwargs))
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/sessions.py", line 85, in dumps
    return json.dumps(_tag(value), separators=(',', ':'))
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/json.py", line 167, in dumps
    rv = _json.dumps(obj, **kwargs)
  File "/usr/lib/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/home/ubuntu/Projects/FMS/lib/python3.6/site-packages/flask/json.py", line 81, in default
    return _json.JSONEncoder.default(self, o)
  File "/usr/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'FileNotFoundError' is not JSON serializable

请帮忙。谢谢。

我通过更新
app.config['UPLOAD\u FOLDER\u IMG\u VEHICLE']
解决了这个问题。 我使用
os.getcwd()
获取完整的当前路径,并添加保存图像的路径

首先,我通过添加
try
来检查错误的根源,除了FileNotFoundError:

#vehicle_info_form
@app.route('/vehicle_info_form/', methods=['GET', 'POST'])
def vehicle_info_form():
    try:
        if request.method == "GET":
            return render_template(
                'vehicleInfo.html'
            )

        elif request.method == "POST":
            inputVehicleImg = request.files['changeVehicleImg']
            if inputVehicleImg.filename == "":
                inputVehicleImg_filename = ""
            else:
                print(inputVehicleImg.filename)
                print(app.config['UPLOAD_FOLDER_IMG_VEHICLE'])
                inputVehicleImg_filename = secure_filename(inputVehicleImg.filename)
                try:
                    inputVehicleImg.save(os.path.join(app.config['UPLOAD_FOLDER_IMG_VEHICLE'], inputVehicleImg_filename))
                except FileNotFoundError:
                    print("File does not exist")
            print ('success')
    except Exception as e:
        print(e)
        return redirect(url_for('vehicle_info_form'))
我尝试上载图像并在控制台中返回
文件不存在

然后我检查
app.config['UPLOAD\u FOLDER\u IMG\u VEHICLE']
的路径,在那里应该上传图像

print(app.config['UPLOAD_FOLDER_IMG_VEHICLE'])
在那里,我发现我的在线服务器的路径不一样,所以我更新了它

import os
path = os.getcwd()
print(path) 

UPLOAD_FOLDER_IMG_VEHICLE = path + "/apps/FMS/static/images/vehicleInfo"

app.config['UPLOAD_FOLDER_IMG_VEHICLE'] = UPLOAD_FOLDER_IMG_VEHICLE

1.您没有将权限设置为777!从未!2.您的错误与会话处理有关,但代码中没有使用会话,而且您显示的代码在回溯中没有引用。我认为错误是由您没有向我们显示的内容引起的。Hi@KlausD。谢谢您的建议,没有将权限设置为777。1.)我只是根据这篇帖子来尝试https://stackoverflow.com/questions/42591899/image-upload-doesnt-work-in-server-works-fine-in-localhost。2.)我只是显示了我有一些问题的代码,这是图像上传。谢谢您对此的输入。@hibrit usta我恢复了您的编辑,因为如果将堆栈跟踪格式化为引号,则很难读取堆栈跟踪。保持代码格式@美元。好的,我随你的便。