Получение размера файла перед публикацией с Python - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть API на моем сервере Flask, где я могу загрузить файл с клиента, используя следующий код:

@app.route('/api/uploadJob', methods = ['GET', 'POST'])
def uolpadJob():
    try:
        if request.method == 'POST':                
            f = request.files['file']
            fullFilePath = os.path.join(app.config['UPLOAD_FOLDER'],
                secure_filename(f.filename))                    
            #fileSize = ???
            f.save(fullFilePath)

Я хочу получить размер файла, прежде чем сохранить его на своем жестком диске. , так что я могу сравнить его с доступным дисковым пространством и выбрать, хочу ли я сохранить его или вернуть сообщение об ошибке. Как я могу получить размер файла до фактической загрузки?

1 Ответ

1 голос
/ 21 ноября 2019

Это может помочь, если вы хотите проверить детали размера перед сохранением:

@app.route('/api/uploadJob', methods = ['GET', 'POST'])
def uolpadJob():
    try:
        if request.method == 'POST':                
            f = request.files['file']
            fullFilePath = os.path.join(app.config['UPLOAD_FOLDER'],
                secure_filename(f.filename))                    
            f.seek(0, 2)
            file_length = f.tell()
            # Introduce your disk space condition and save on basis of that
            f.save(fullFilePath)

Однако, если вы хотите проверить после сохранения файла по указанному пути, попробуйте следующее:

@app.route('/api/uploadJob', methods = ['GET', 'POST'])
def uolpadJob():
    try:
        if request.method == 'POST':                
            f = request.files['file']
            fullFilePath = os.path.join(app.config['UPLOAD_FOLDER'],
                secure_filename(f.filename))                    
            f.save(fullFilePath)
            fileSize = os.stat(fullFilePath).st_size
...