自动从文件夹加载文件

时间:2014-12-04 05:11:44

标签: php file-upload

我需要这样,当文件在此文件夹中可用时,它会自动加载文件

  

模板/顺序/文件

<input style="float: right; width: 40%; margin-top: 2px; " type="file" name="zip_images_<?php echo $OrderProduct->orders_products_id?>'[]" />

现在我确实喜欢这个

    <?php
if (count($_FILES) > 0)
{
    $objBlockBase->uploadImages($Orderpid, $OrderId);
}

function uploadImages($Orderpid, $OrderId)
{
    $valid_image_type = array('image/jpg', 'image/png');
    $valid_zip_type   = array('application/x-zip-compressed', 'application/download', 'application/zip');
    $folder = DIR_WS_IMAGES_ORDERS . $OrderId . '/block_images';

    (isset($_POST['clearImages']) && ($_POST['clearImages'] == 1 || $_POST['clearImages'] == '1')) ? (exec('rm -rf '.$folder.'/*')) : (true);
    (!is_dir($folder)) ? (mkdir($folder, 0777)) : (true);

    foreach ($_FILES as $file)
    {
        $total_count = count($file['name']);
        for($i = 0; $i < $total_count; $i++)
        {
            if ($file['error'][$i] == 0 && $file['size'][$i] > 0)
            {
                $str_filename = preg_replace("[^A-Za-z0-9.-]", "_", $file['name'][$i]);
                while (strpos($str_filename,"__")>0)
                $str_filename = str_replace("__", "_", $str_filename);

                $file_name = $folder . '/' . $str_filename;
                move_uploaded_file($file['tmp_name'][$i], $file_name);

                if (in_array($file['type'][$i], $valid_image_type) || in_array($file['type'][$i], $valid_zip_type))
                {
                    if (in_array($file['type'][$i], $valid_zip_type))
                    {
                        exec('unzip ' . $file_name . ' -d ' . $folder . '/');
                        unlink($file_name);
                    }
                }
            }
        }
    }
}

?>

仅在我手动上传文件时才有效。但我希望它从模板/订单/文件自动加载文件。这可能吗?

1 个答案:

答案 0 :(得分:0)

我认为您想要使用的是PHP的scandir();,它将为您提供文件夹中所有文件的数组。

脚本示例:

scandir("templates/order/file");

这将输出如下数组:

 Array(
[0] => .
[1] => ..
[2] => test.jpg
[3] => foo.txt
[4] => ex.zip 
)

数组中的两个点条目将始终显示。

您还可以对scandir()的顺序进行排序;在手之前。或者实际上做任何你想要的东西。点击here了解有关scandir();

的更多信息

我希望这是你正在寻找的,因为这是我理解你的问题。