nam*_*nam 5 python file-upload amazon-s3 flask
这是处理上传请求的代码:
@app.route('/upload', methods=['POST'])
def upload():
if request.method == 'POST':
test = request
data_file = request.files.get('file')
file_name = data_file.filename
conn = S3Connection(settings.ACCESS_KEY, settings.SECRET_KEY)
bucket = conn.get_bucket(settings.BUCKET_NAME)
k = Key(bucket)
k.key = 'file_test.jpg'
# k.set_contents_from_file(data_file)
k.set_contents_from_string(data_file.readlines())
# return jsonify(name=file_name)
return jsonify(name=file_name)
Run Code Online (Sandbox Code Playgroud)
我尝试了3种选择:
k.set_contents_from_string(data_file.readlines())
k.set_contents_from_file(data_file)
k.set_contents_from_stream(data_file.readlines())
Run Code Online (Sandbox Code Playgroud)
那么将文件上传到亚马逊s3的正确方法是什么?
这是一个功能齐全的示例,说明如何使用HTML文件输入标签Python,Flask和Boto将多个文件上传到Amazon S3.
使这项工作的主要关键是Flask request.files.getlist和Boto set_contents_from_string.
一些技巧:
在您的代码中的以下行中:
k.set_contents_from_string(data_file.readlines())
Run Code Online (Sandbox Code Playgroud)
您正在向亚马逊发送一系列list字符串(以换行符结尾!),而不是按原样发送文件内容。
您需要传递str带有文件内容的单个对象:
set_contents_from_string(data_file.read())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7670 次 |
| 最近记录: |