文件上传到PHP代码中除spcified目录之外的另一个目录

时间:2016-01-16 01:50:39

标签: php file-upload

我有一个像这样的文件夹结构:

 admin-panel
     -- thesis-scripts
           -- add_thesis.php 
 uploads

我正在尝试将.docx文件上传到uploads目录。这是我的代码:

$targ_dir = "uploads/";
$targ_file = "../" . $targ_dir . basename($_FILES["thesisfile"]["name"]);
$flagOk = 1;
$tempFolder = $_FILES['thesisfile']['tmp_name'];
if(move_uploaded_file($tempFolder, urlencode($targ_file))){
    echo $targ_file;
} 

但是,上面的代码会导致thesis-scripts文件夹中的文件上传。如何将文件移动到uploads文件夹?谢谢您的帮助。我故意在../中添加了$targ_file因为我将文件路径保存在数据库中。

3 个答案:

答案 0 :(得分:0)

upload_tmp_dir是您需要的,更改默认的临时目录,根据文档here

  

upload_tmp_dir string用于存储文件的临时目录   在进行文件上传时。必须是PHP所用的任何用户都可写的   跑来跑去。如果未指定,PHP将使用系统的默认值。

     

如果此处指定的目录不可写,PHP将回退到   系统默认临时目录。如果打开open_basedir,那么   必须允许系统默认目录才能成功上传。

你有2个选择要么在你的php代码中写一下:

ini_set('upload_tmp_dir','your/path'); 

或在php.ini uncomment upload_tmp_dir中更改它,并最终使用所需的路径

答案 1 :(得分:0)

将$ target_dir更改为“/ uploads”(请注意前导斜杠)。

没有前导斜杠,上传是相对于脚本的,前导斜杠是相对于目录的顶部

答案 2 :(得分:0)

感谢所有回复的人。我设法使用$_SERVER['DOCUMENT_ROOT'] . /path/path

解决了这个问题
//$targ_dir = $_SERVER['DOCUMENT_ROOT'].'/ThesisRepo/uploads/';
$targ_file = $targ_dir  . basename($_FILES["thesisfile"]["name"]);
$flagOk = 1;
$tempFolder = $_FILES['thesisfile']['tmp_name'];
if(move_uploaded_file($tempFolder, $targ_file)){
    // echo $_FILES["thesisfile"]["name"]; 
    echo $targ_file;
    //echo basename($_FILES["thesisfile"]["name"]); 
}