получить имя файла boto3 python - PullRequest
0 голосов
/ 05 ноября 2018

Я новичок в склянке и boto3 и хочу создать простую форму загрузки в s3 amazon, и мне нужно сохранить файл на s3 с существующим именем файла и вернуть ссылку на этот файл.

Два выпуска:

1) В приведенном ниже примере файл всегда загружается с именем «test». Если имя файла загрузки будет «my file.pdf», мне нужно загрузить файл на s3 с тем же именем («file.pdf»). Я верю, что это можно сделать с помощью запроса, но я не знаю, как именно. Как это можно сделать?

2) Как вернуть ссылку на файл, который я только что загрузил? (Понятия не имею)

ниже мой код

@app.route('/')
def index():
    return '''
    <form method="post" enctype="multipart/form-data" action="upload">
     <input type="file" name="file" multiple>
     <input type="submit">
    </form>
    '''

@app.route('/upload', methods=['POST', 'GET'])
def upload():
    s3 = boto3.resource('s3')
    s3.Bucket('dimkzn').put_object(='test', Body=request.files['file'])
    return 'file save! to S3'

если имя == ' main ': Код app.run (debug = True) здесь

1 Ответ

0 голосов
/ 09 ноября 2018

Я думаю, что ваша проблема в строке:

s3.Bucket('dimkzn').put_object(='test', Body=request.files['file'])

Вам не хватает имени аргумента перед = 'test'. Из вашего кода не видно, что возвращает request.files ['file']: это имя файла или содержимое файла?

Правильный синтаксис:

object = bucket.put_object(
    Body=b'bytes'|file,
    Key='filename')

... где Body - это содержимое файла, Key - имя файла.

После успешного завершения вы можете создать ссылку самостоятельно следующим образом:

https://s3-<region>.amazonaws.com/<bucketname>/<filename>

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...