2014-12-04 75 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