2014-12-04 34 views
2

我需要这样,当该文件是该文件夹中可用自动从文件夹

模板/顺序/文件

<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); 
        } 
       } 
      } 
     } 
    } 
} 

?> 

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

+0

您应该检查上传的文件,否则可能会上传恶意文件,如'.php'文件。 – Gumbo 2014-12-04 07:05:28

回答

0

我想你要使用的是PHP的scandir();它会提供一个文件夹内的所有文件的数组。

脚本实例:

scandir("templates/order/file");

这将输出如下的数组:在阵列中

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

两个点项将总是出现。

您还可以对scandir()的顺序进行排序;之前。或者实际上做几乎任何你想要的东西。有关scandir()的更多信息,请点击here;

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

+0

是否可以通过使用存储在数据库中的文件名进行搜索来获取文件? – Anju 2014-12-04 07:45:16

+0

是的,你可以真正检查数组中的文件名是否可用。 'if(in_array(“DBFilename”,$ array)){echo'DB file in folder';}' – w3shivers 2014-12-04 07:51:05

+1

我以另一种方式做到了。但感谢您的努力和解决方案 – Anju 2014-12-04 12:18:27

相关问题