在发送电子邮件之前将Attched文件上传到临时目录

时间:2017-06-07 10:37:08

标签: php file-upload

在发送包含多个附件的电子邮件之前,尝试将附加到邮件表单的文件上传到服务器上的临时目录。

HTML

        <div class="file-upload-wrapper">
            <label class="file-field" data-max-files="6">
                <input type="file" name="photos" multiple>
                <span>Drag your files here or click to select your files <span>.jpg, .png and .pdf</span></span>
            </label>
            <div class="uploaded-files"></div>
        </div>

目录路径

$path_to_holding_directory = "/var/www/vhosts/mysite/test.mysite.com/bin/";

bin文件夹具有“777”权限

PHP脚本

    function rearrange( $arr ){
    foreach( $arr as $key => $all ){
        foreach( $all as $i => $val ){
            $new[$i][$key] = $val;
        }
    }
    return $new;
}

if(isset($_FILES['photos']))
{
    $_photos = rearrange($_FILES['photos']);

    foreach($_photos as $file)
    {
        $path_of_uploaded_file = $path_to_holding_directory . $file['name'];
        $tmp_path = $file["tmp_name"];

        if(is_uploaded_file($tmp_path))
        {
            if(!copy($tmp_path,$path_of_uploaded_file))
            {
                $errors .= '\n error while copying the uploaded file';
            }
        }

        print_r($file);

        $message .= $file['name'];
    }
}

我得到以下数组:

Array
(
    [name] => gr-1.jpg
    [type] => image/jpeg
    [tmp_name] => /tmp/phpc7s2Ug
    [error] => 0
    [size] => 41253
)
Array
(
    [name] => gr-2.jpg
    [type] => image/jpeg
    [tmp_name] => /tmp/php6qLSeb
    [error] => 0
    [size] => 51475
)

我试图用多个文件来做这件事,但到目前为止还没有成功。我想在这里找到的解决方案enter link description here

1 个答案:

答案 0 :(得分:0)

您的输入字段未标记为数组: <input type="file" name="photos" multiple>

这样即使您可以使用文件选择器选择它,也无法保存多个文件值。只需将字段命名为photos[]即可。发布后你会得到一个像这样的数组:

Array
(
    [photos] => Array
        (
            [name] => Array
                (
                    [0] => image1.jpg
                    [1] => image2.gif
                )
            // ... more values
        )
)

但是,我发现你也在使用掉落目标。我不知道它是什么插件,但如果你仍然面临问题,我认为你应该参考插件的创建者。如果它不是插件而是您自己创建的,请使用代码创建一个单独的问题以获得帮助。