将上载的文件作为附件发送但不保存到服务器

时间:2016-05-28 17:27:14

标签: php image forms email upload

我的网站上有一个联系表单,允许用户将文件作为附件发送到电子邮件。现在我的理由是,我不需要或者不一定希望每个图像都上传到网站服务器,但是当使用表单输入文件时,无论如何都会上传。

表单上传文件是有意义的,因为这是它的功能,但我想知道这是不可避免的,还是有办法仍然将图像作为附件发送,但没有将其上传到服务器。< / p>

2 个答案:

答案 0 :(得分:2)

从这个答案https://stackoverflow.com/a/23849972/中拉出来(并花了一些时间找到解决方案)。

旁注:我赞同它所取得的答案,只是你知道。

&#34;我将$_FILES['attachment']['tmp_name']分配给一个临时变量,它有效! 不知道为什么,但这解决了我。 这是我的代码&#34;

// Swiftmail commands ====================================
require_once('./swiftmailer/lib/swift_required.php');

$transport = Swift_SmtpTransport::newInstance('smtp.host.com', 587)
->setUsername('email@host.com')
->setPassword('pass');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance()
->setSubject($subject_temp)

->setFrom(array($from_email => $full_name))

->setTo(array('email@host.com' => 'Jack'))

->setBody($message_temp)

->attach(Swift_Attachment::fromPath($file_temp_name)

->setFilename($name_of_file));

$result = $mailer->send($message);

// Swiftmail commands ====================================

$file_temp_name = $_FILES['attachment']['tmp_name'];$name_of_file = basename($_FILES['attachment']['name']);

的位置
  • 所以反过来(并且我知道可以做的事情),你将使用服务器上临时存储的文件并将其附加到邮件中,一旦成功提供/处理邮件就会自动删除。

答案 1 :(得分:0)

如评论中所述:

1。)即使可以在发布后自动删除文件,我使用的电子邮件功能也没有这样设置。因此,上传到服务器是不可避免的。或者至少据我所知。

2.)我可以在发送邮件后从服务器删除该文件。

如果发现能够最好地解决我的问题的解决方案,将会更新。