2012-10-26 50 views
4

@attachment中有文件。从调试:将临时文件附加到电子邮件中的错误

"datafile"=>#<ActionDispatch::Http::UploadedFile:0x3eee9c0  @original_filename="filename.jpg", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"datafile\"; filename=\"filename.jpg\"\r\nContent-Type: image/jpeg\r\n", 
@tempfile=#<File:C:/Users/.../RackMultipart20121026-2452-g369hf>>, 

它通过用户窗体上传。

我试图把它附加到电子邮件:

... 
attachments[@attachment.original_filename] = @attachment 
mail(:to => "[email protected]", :subject => "test", :from => @fromaddress) 

哪些错误:

未定义的方法`#为

我也曾尝试

长度”
attachments[@attachment.original_filename] = @attachment.tempfile 

个哪些错误:

undefined method `[]' for #<Tempfile:0x5629e48> 

@attachment.original_filename返回正确的文件名(例如 “filename.jpg”)

任何明显?

回答

5

除非您将上传的文件保存到某个地方,否则它会受到一定的限制,您可以使用它来做什么(出于安全原因 - 您应该验证上传文件然后存储文件)。

但是,你应该能够read文件:

attachments[@attachment.original_filename] = @attachment.read 

注:我没有测试过这一点,也许你需要从

+1

工作完全阅读。我知道我只是将错误的数据提供给邮件()。 –

相关问题