我有一个上传脚本,必须先上传文件名。 这是我的代码:
<?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变量时,它不再上传文件,所以我将我的代码恢复到正常工作的那一刻,你能吗?请帮我找到如何使用变量内容替换原始文件名?
非常感谢
答案 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;