Как использовать curl для отправки файла в Google Cloud Function? - PullRequest
0 голосов
/ 30 марта 2019

У меня есть следующая облачная функция, которая в основном основана на документации:

def hello_world(request):
    if request.method == 'GET':
        print('GET')
    elif request.method == 'PUT':
        print("PUT")
    # This code will process each file uploaded
    files = request.files.to_dict()
    print("files: ",files)
    for file_name, file in files.items():
        file.save(get_file_path(file_name))
        print('Processed file: %s' % file_name)

    # Clear temporary directory
    for file_name in files:
        file_path = get_file_path(file_name)
        os.remove(file_path)

    return "Done!"

С помощью следующей команды curl я пытаюсь загрузить файл в эту функцию, файл может быть изображением или pdf:

curl -i -T myFile https://Link -функция в облаке - verbose

При этом моя функция печатает «PUT» и немедленно возвращает «Done». Следовательно, словарь файлов просто пуст.

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 30 марта 2019

Вы должны быть в состоянии сделать что-то похожее на:

curl \
--form file1=@filename1 \
--form file2=@filename2 \
...\
https://...

Альтернативным - возможно, лучшим - решением будет размещение файлов непосредственно в Google Cloud Storage, а затем запуск вашей облачной функции для обработки этих файлов (возможно, перемещение из источника | приемное ведро в место назначения | обрабатываемое ведро тоже) :

https://cloud.google.com/functions/docs/writing/http#uploading_files_via_cloud_storage

Незначительный: я думаю, для этого случая, POST предпочтительнее, чем PUT.

...