gpt4 book ai didi

python - 使用 Pyramid 通过电子邮件发送从 POST 请求上传的文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:30 26 4
gpt4 key购买 nike

我有一个 Angular 应用程序,它通过 POST 将文件上传到由 Pyramid/Python 处理的端点:

@Component({
selector: 'app-application',
templateUrl: 'app.application.html'
})
export class ApplicationComponent {
public uploader: FileUploader = new FileUploader({
url: MyEndPoint
});

还有我的 Pyramid 服务器:

@application.post()
def job_application(request):

request.response.headerlist.extend(
(
('Access-Control-Allow-Origin', AngularClient),
('Content-Type', 'application/json'),
('Access-Control-Allow-Credentials', 'true'),
('Allow', 'GET, POST')
)
)


mailer = Mailer(host="smtp.gmail.com",
port="465", username="makeemup@gmail.com", password="password", ssl=True)
message = Message(subject="It works!",
sender="makeemup@gmail.com",
recipients=["makeemup@gmail.com"],
body="hello"
)

if request.POST:

attachment = Attachment("photo.doc", "doc/docx", str(request.body))
message.attach(attachment)

mailer.send_immediately(message, fail_silently=True)

return request.response

当我尝试将上传的文件附加到电子邮件时,WebKitFormBoundary 标记会附加到文件的页眉和页脚,并以字节代码返回内容。如何通过 Pyramid 服务器将实际上传的文件附加到电子邮件地址?

最佳答案

听起来发生的事情是您将 POST 请求的实际正文附加到文件本身,这就是为什么 WebKitFormBoundary 标记出现在您的文件中。

因此,首先您需要访问您想要的特定内容,该内容存储在 MultiDict 对象中,并且可以像普通字典一样访问。

然后我会将这些内容写入某处,比如您的/tmp/目录,特别是如果您是 UNIX 用户。然后从此文件路径将电子邮件附加到 Pyramids 邮件程序。

if request.POST:

new_file = request.POST['uploadFile'].filename
input_file = request.POST['uploadFile'].file
file_path = os.path.join('/tmp', '%s.doc' % uuid.uuid4())
temp_file_path = file_path + '~'


input_file.seek(0)
with open(temp_file_path, 'wb') as output_file:
shutil.copyfileobj(input_file, output_file)

os.rename(temp_file_path, file_path)
data = open(file_path, 'rb').read()
mr_mime = mimetypes.guess_type(file_path)[0]

attachment = Attachment(new_file, mr_mime, data)
message.attach(attachment)
mailer.send_immediately(message, fail_silently=True)

希望这有帮助!

关于python - 使用 Pyramid 通过电子邮件发送从 POST 请求上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com