2012-11-28 37 views
0

我是新的PHP,它是学习过程。Php从数组值中获取文件扩展名

我有一个html上传表单。我正在尝试重命名上传的文件。所以下面是获取文件扩展名的php代码,然后我添加一个php uniqid();重命名它。

获取文件扩展代码:

$img = $_FILES['images']['name']; 

function getExtension($str) 
{ 
    $i = strrpos($str,"."); 
    if (!$i) { return ""; } 

    $l = strlen($str) - $i; 
    $ext = substr($str,$i+1,$l); 
    return $ext; 
} 

$extension = getExtension($img); 
$id = uniqid(); 
$newimg = $id.'.'.$extension; 

好了,这对OK我只有一个上传文件,如果我多上传表单然后我如何得到多个文件扩展名与此功能?

对于获得以下是我的PHP代码的多个文件:

$uploaded_files = array(); 
$upload_directory = dirname(__file__) . '/uploaded/'; //set upload directory  


for ($i = 0; $i < count($_FILES['images']['name']); $i++) 
      { 
       $number_of_file_fields++; 

       if ($_FILES['images']['name'][$i] != '') 
       { //check if file field empty or not 
        $number_of_uploaded_files++; 

$uploaded_files[] = $_FILES['images']['name'][$i]; 

if (move_uploaded_file($_FILES['images']['tmp_name'][$i], $upload_directory . $_FILES['images']['name'][$i])) 
        { 
         $number_of_moved_files++; 
        } 

       } 

      } 

HTML表单

<table width="1020" border="0" cellspacing="7" cellpadding="0"> 
<tr> 
<td valign="top" width="250"> 
    Upload your property picture 
</td> 
<td> 
    <div id="file_container"> 
     <input name="images[]" type="file" class="tr2" /> 
     <br /> 
    </div> 
<a href="javascript:void(0);" onClick="add_file_field();">Add another</a> 
<input type="submit" value="Save & Continue" name="Submit" class="submit" /> 
</td> 
</tr> 
</table> 

回答

1
function changeFilename($str) 
{ 
    $pathinfo = pathinfo($str); 
    return uniqid() . "." . $pathinfo['extension']; 
} 
$oldarray = array("hello.txt","ytuwe.php"); 
$newarray = array_map("changeFilename", $oldarray); 
var_dump($newarray); 

这里是一个演示:http://ideone.com/gPi61D

+0

感谢您的回复@Asad。 $ oldarray是$ uploaded_files数组()? – Babu

+0

@Babu是的,'$ oldarray'是具有不变文件名的数组,而'$ newarray'具有更改为唯一ID的文件名。 –

+0

这个函数是从图像[]中获取所有文件并重命名它? – Babu

0

为什么不使用PHP的pathinfo函数获取文件扩展名?

$extension = pathinfo($img, PATHINFO_EXTENSION); 
$id = uniqid(); 
$newimg = $id.'.'.$extension;