我正在制作一个Python Webhook来拦截包含文件附件网址的FormStack数据(以JSON格式发送)。我需要下载文件附件并通过SendGrid API将其作为邮件附件发送。
SendGrid API需要文件名和路径作为附加文件的参数。
message.add_attachment('stuff.txt', './stuff.txt')
我提到了urllib2
,但我似乎无法找到一种方法来下载任何扩展名的文件,并获取其位置以便进一步上传。
答案 0 :(得分:0)
将其下载到临时文件,例如使用tempfile
。
关键线(简化):
s = urllib2.urlopen(url).read()
tf = tempfile.NamedTemporaryFile(suffix='.txt', delete=False) # OPT: dir=mytempdir
tf.write(s)
path = tf.name
tf.close()
答案 1 :(得分:0)
完整详细的代码对我有用
import tempfile
import sendgrid
url = 'your download url'
file_name = file_name = url.split('/')[-1]
t_file = tempfile.NamedTemporaryFile(suffix=file_name, dir="/mydir_loc" delete=False)
# Default directory is '/tmp' but you can explicitly mention a directory also
# Set Delete to True if you want the file to be deleted after closing
data = urllib2.urlopen(url).read()
t_file.write(data)
# SendGrid API calls
message.add_attachment(file_name, tf.name)
status, msg = sg.send(message)
t_file.close()