Я работаю над небольшим приложением, которое будет принимать очень большие файлы от пользователя и загружать их в Blobstore, а затем обрабатывать и перемещать в Google Cloud Storage.
Я использую Python для этого, и мой код ниже. Использование стандартной среды с Python2.7
Когда пользователи добавляют небольшие файлы, они обычно могут загружать данные, и весь рабочий процесс проходит гладко, однако, когда они загружают файлы размером более 1 или 2 ГБ, они получают ошибку ниже
Ошибка неверного запроса
Срок действия URL для загрузки истек.
Приложение представляет собой веб-приложение, которое загружает форму для загрузки своих файлов. Пользователи увидят форму, нажмите кнопку обзора, чтобы загрузить свой файл, а затем нажмите кнопку отправки, чтобы начать загрузку
import os
import urllib
import webapp2
import cgi
import argparse
import datetime
import pprint
import re
import webapp2
import requests
import cloudstorage
import logging
from flask import Flask, request
from google.appengine.api import app_identity
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.api import users
from google.appengine.api import app_identity
class MainHandler(webapp2.RequestHandler):
def get(self):
gs_bucket_name = 'BUCKET_NAME'
upload_url = blobstore.create_upload_url('/upload',gs_bucket_name=gs_bucket_name)
self.response.write('<html>\n<body>\n')
self.response.write('<form action="%s" method="POST" enctype="multipart/form-data">\n'% upload_url)
self.response.write('<input type="file" name="file" accept=".mp4"><br>\n')
self.response.write('<input type="submit" name="submit" value="Submit"></form>\n')
self.response.write('</body>\n</html>\n\n')
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
# 'file' is file upload field in the form
upload_files = self.get_uploads('file')
file_infos = self.get_file_infos()
blob_info = upload_files[0]
file_info = file_infos[0]
glob_gs_object_name=file_info.gs_object_name[3:]
glob_filename=upload_files[0].filename
cloudstorage.copy2(file_info.gs_object_name[3:], '/BUCKET_NAME/'+upload_files[0].filename, metadata=None, retry_params=None)
try:
cloudstorage.delete(file_info.gs_object_name[3:])
except cloudstorage.NotFoundError:
pass
self.response.write(complete_upload)
app = webapp2.WSGIApplication([('/', MainHandler),('/upload', UploadHandler)],debug=True)
Так что я искал, чтобы нормально загружать большие файлы и не получать эту ошибку ...