我昨天问了这个问题并得到了一个建议并使用了它,但由于某些原因它不起作用。 因此,我需要检索用户从HTML表单上传到我的服务器的文件的名称。我需要将此文件附加到由PHP / SwiftMailer发送的电子邮件中。 这是我的代码,文件上传部分:
//File upload
// Where the file is going to be placed
$target_path = "uploads/";
// Add the original filename to our target path.
//Result is "uploads/filename.extension"
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
//End of file upload
这是文件附加部分:
//Create the attachment
$attachment = Swift_Attachment::fromPath($_FILES['uploadedfile']['tmp_name']);
为什么不从服务器获取文件? 这是错误消息,看起来它正在尝试在错误的目录中找到该文件:
警告:fopen(/ tmp / phpHJdw0H) [function.fopen]:无法打开 stream:没有这样的文件或目录 /home/myserver/mydomain.com/Hawaii/html/swift-mailer/lib/classes/Swift/ByteStream/FileByteStream.php 在131线 致命错误:/home/myserver/mydomain.com/Hawaii/html/swift-mailer/lib/classes/Swift/ByteStream/中未捕获的异常'Swift_IoException'消息'无法打开文件以供阅读[/ tmp / phpHJdw0H]' FileByteStream.php:133堆栈跟踪:#0
等
谢谢!
答案 0 :(得分:5)
使用:
$attachment = Swift_Attachment::fromPath($target_path);
这是因为您已将文件从其临时位置移动,$_FILES['uploadedfile']['tmp_name']
返回使用move_uploaded_file移动文件之前的路径。这假设$target_path
在swift邮件代码的范围内