【发布时间】:2020-11-24 19:35:12
【问题描述】:
我正在尝试通过 Google App Engine 将大型视频上传到 Google Cloud Storage。
我遵循了这篇文章中提到的上传大型电子表格的原则。 Can't upload large files to Python + Flask in GCP App Engine
我已经使用 dropzone.js 设置了分块
我已经在 main.py 中设置了一个上传,我希望将文件块上传到应用程序的 tmp 目录中,并设置了在所有部分到位后将完成的文件移动到 Google Cloud Storage 的逻辑。
我收到以下错误消息:
TypeError: write() 参数必须是 str,而不是字节
这是我的后端代码
从烧瓶进口烧瓶,render_template,请求,重定向,url_for 从 google.cloud 导入存储 从 flask_dropzone 导入 Dropzone 从 werkzeug.utils 导入安全文件名 导入操作系统 导入base64 app = Flask(__name__, template_folder='./templates', static_folder="./static") dropzone = Dropzone(应用程序) app.config['UPLOAD_PATH'] = '/tmp' @app.route('/', methods=['GET', 'POST']) 定义索引(): 返回渲染模板('index.html') @app.route('/upload', methods=['POST', 'GET']) 定义上传(): 如果 request.method == 'POST': upload_file = request.files.get('文件') tmp_file_path = '/tmp/' + upload_file.filename 使用 open(tmp_file_path, 'a') 作为 f: f.write(uploaded_file.read()) chunk_index = int(flask.request.form.get('dzchunkindex')) 如果 (flask.request.form.get('dzchunkindex') 不是无)否则 0 chunk_count = int(flask.request.form.get('dztotalchunkcount')) if (flask.request.form.get('dztotalchunkcount') 不是 None) else 1 如果 (chunk_index == (chunk_count - 1)): print('保存文件到存储器') 打印(块数) storage_client = storage.Client() storage_bucket = storage_client.get_bucket('percy-277618.appspot.com') blob = storage_bucket.blob(upload_file.filename) blob.upload_from_filename(tmp_file_path,client=storage_client) print('保存到存储') print('删除临时文件') os.remove(tmp_file_path) 如果 __name__ == '__main__': app.run(主机='127.0.0.1',端口=8080,调试=真)这是我的前端代码。
Dropzone.options.uploadwidget = { 参数名称:'文件', forceChunking:是的, 超时:300000, 分块:是的, 网址:'/上传', 块大小:10485760, 最大文件大小:1025, };【问题讨论】:
标签: python python-3.x google-app-engine google-cloud-platform google-cloud-storage