从php发送电子邮件附件并上传ftp

时间:2014-08-27 19:25:48

标签: php ftp

在这里,我能够将收到的文件(文件没有已知名称,使用当前日期和时间创建)上传到FTP中。并且以同样的方式我想将该附件作为邮件发送。

我得到的错误是(来自下面代码中的最后一个语句):

  

文件打开错误。

我无法在发送邮件时选择收到的文件。谁能告诉我为什么以及如何?

$destDir = 'myweb.net/name/' .$dir;
 $workDir = 'tmpfiles';// define this as per local system

 // get temporary file name for the uploaded file
$tmpName = basename($_FILES['uploadedfile']['tmp_name']);
$fileName = basename($_FILES['uploadedfile']['name']);

// copy uploaded file into current directory
move_uploaded_file($_FILES['uploadedfile']['tmp_name'],$workDir."/".$tmpName)
 or die("Cannot move uploaded file to working directory");

// open connection
$conn = ftp_connect($ftp_server) or die ("Cannot initiate connection to host");

// send access parameters
ftp_login($conn, 'abcd', 'saddad') or die("Cannot login");

// perform file upload
$upload = ftp_put($conn, $destDir."/".$_FILES['uploadedfile']['name'],$workDir."/".$tmpName, FTP_BINARY);

// check upload status
// display message
if (!$upload) {
 echo "Cannot upload<br />\n";
} else {


 $to = $Remail;
 $subject = "This is subject";
 $message = "This is test message.";
// Open a file
 $file = fopen($_FILES['uploadedfile']['name'], "r" );
 if( $file == false )
  {
 echo "Error in opening file";
 exit();
 }

1 个答案:

答案 0 :(得分:0)

您正在尝试打开ORIGINAL客户端文件名,该文件名与您服务器上的任何内容完全无关。您服务器上唯一存在的文件是['tmp_name']中列出的文件,您现在已移至$workdir

你的fopen应该是

$file = fopen($workDir . '/' . $tmpName, 'r');

另外,您对用户&gt;网络服务器上传内容绝对没有错误处理,只是假设上传永远不会失败。不好的假设。