使用 Flask 上传文件

File upload using Flask

我正在尝试实现 python API 以便在我的服务器上上传文件,但由于未知原因,它没有 运行。

据我了解,app.py 未被识别

这是我的API.py

from flask_cors import CORS
from flask_restful import Api, Resource, reqparse
import sqlite3
import uuid
import os
import csv
import urllib.request
import threading
import queue as Queue
import subprocess
import json
import re
import datetime

app = Flask(__name__)
api = Api(app)
CORS(app)

class upload(Resource):
    def post(self):
    ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

    def allowed_file(filename):
        return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

    def upload_file():
        # check if the post request has the file part
        if 'file' not in request.files:
            resp = jsonify({'message' : 'No file part in the request'})
            resp.status_code = 400
            return resp
        file = request.files['file']
            int = str(request.form['int']) #true or false

        if file.filename == '':
            resp = jsonify({'message' : 'No file selected for uploading'})
            resp.status_code = 400
            return resp
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))  

                return json.dumps(data),   200
        else:
            resp = jsonify({'message' : 'Allowed file types are doc, etc.'})
            resp.status_code = 400
            return resp


api.add_resource(upload, "/api/v1/upload")
app.run(host='0.0.0.0', debug=True)

这是我的app.py

UPLOAD_FOLDER = '/home/xxxx/xxx/upload'
app = Flask(__name__)
#app.secret_key = "secret key"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

你能帮忙吗?有什么建议吗?

根据评论,您似乎有两个单独的应用程序。

我会坚持使用第一个 API.py,但您需要将设置配置变量的行移动到 API.py:

所以在 API.py 这一行之后:

app = Flask(__name__)

立即设置配置值:

UPLOAD_FOLDER = '/home/xxxx/xxx/upload'
#app.secret_key = "something super secret"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

然后执行:

python API.py