我有一个像这样的文件夹结构:
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
因为我将文件路径保存在数据库中。
答案 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"]);
}