Как отправить почтовый файл с правильным именем из облачной функции Google с помощью Python? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть код, который генерирует zip-файл и предлагает его для загрузки. Это обрабатывается в облачной функции Google. Генерация и загрузка zip-файла не проблема, но я не могу заставить функцию вернуть zip-файл с заданным именем. По умолчанию для загрузки всегда используется имя функции «fdsuitebuilder».

Это код;

from dsuite import DSuite
from flask import send_file

def main(request):
    ... #creating and filling a DSuite object called ds
    ffullname = ds.write("tmp", "output.stix")   
    return send_file(ffullname, mimetype='application/zip', attachment_filename='output.stix', as_attachment=True)

Так что я ожидаю, что при запуске функции я буду генерировать загрузку с именем output.stix (которая на самом деле является zip-файлом), но вместо этого получаюзагрузка под названием 'fdsuitebuilder'

Я полагаю, это связано с тем, что GCP не является флягой, но если кто-то знает правильный способ создания правильного имени для загрузки, я был бы рад узнать!

С уважением

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Решено, каким-то образом облачное репо не синхронизировалось с облачной функцией.

0 голосов
/ 12 ноября 2019

У меня работает следующее:

from tempfile import mktemp
from flask import send_file


def test(request):
    fn = mktemp()
    with open(fn, "w") as f:
        f.write("Hello")
    return send_file(
        fn,
        mimetype="application/zip",
        attachment_filename="output.stix",
        as_attachment=True,
    )
$ curl -I https://us-central1-gcf-sendfile-test.cloudfunctions.net/test
HTTP/2 200
cache-control: public, max-age=43200
content-disposition: attachment; filename=output.stix
content-type: application/zip
etag: "1573510438.2602577-5-834405785"
expires: Tue, 12 Nov 2019 10:13:58 GMT
function-execution-id: 7sb3tp6j260y
last-modified: Mon, 11 Nov 2019 22:13:58 GMT
content-length: 5
date: Mon, 11 Nov 2019 22:13:58 GMT
server: Google Frontend

Я не вижу причины, по которой ваш пример не сработает. Можете ли вы подтвердить, что он успешно развернул версию, которую вы включили?

...