PHP上传文件更改名称

时间:2016-07-18 18:50:48

标签: php

我有一个上传脚本,必须先上传文件名。 这是我的代码:

<?php
$ds          = DIRECTORY_SEPARATOR; 
$fileName    = $_POST['articleSlug'];
$storeFolder = '../uploads';  

if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];                      

    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  

    $targetFile =  $targetPath. $_FILES['file']['name']; 

    move_uploaded_file($tempFile,$targetFile);

}
?>

我必须使用$fileName变量来更改文件名,但是当我更改$ targetFile变量时,它不再上传文件,所以我将我的代码恢复到正常工作的那一刻,你能吗?请帮我找到如何使用变量内容替换原始文件名?

非常感谢

2 个答案:

答案 0 :(得分:1)

最可能的错误是使用$ fileName更改$ targetFile,您尝试将文件写入您没有足够权限的地方。

你可能需要这样做:

 <?php

    $ds          = DIRECTORY_SEPARATOR; 
    $fileName    = $_POST['articleSlug'];
    $storeFolder = '../uploads';  

if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];                      

    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  

    $targetFile =  $targetPath . $fileName; 



    move_uploaded_file($tempFile,$targetFile);

}
?>

此外&#34; move_uploaded_file&#34;当有些事情出错时会抛出警告。您可以在脚本开头使用以下行来显示此警告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

最后,你可以对两个可能的目的地做一个vardump,并比较它们以检测最近发生的事情。

var_dump($targetPath . $fileName, $targetPath. $_FILES['file']['name']);

答案 1 :(得分:0)

替换

  

$ targetFile = $ targetPath。 $ _FILES [ '文件'] [ '名称'];

  

$ ext = end(explode(“。”,$ _FILES ['file'] ['name']));

     

$ targetFile = $ targetPath。文件名 。 '' 。 $ EXT;