php move_uploaded_file尝试在移动期间更改文件名

时间:2011-11-30 19:12:27

标签: php file-upload

当我尝试使用以下代码将我从html表单中获取的文件重命名为目录时,出现错误。我需要通过将$studyId连接到文件名来更改文件名以使其唯一。该错误正确打印出文件originalName / studyId.extension。我可以将文件移动到“videos”文件夹中,如果我没有连接并只使用$_FILES["sonogram"]["name"]作为move_uploaded_file的第二个参数,php.net上有一些示例使用这种语法,您可以在其中选择要命名的内容上传的文件,所以我假设它的东西很傻。我应该提到我在Windows系统上。任何帮助将不胜感激

$pathParts = pathinfo($_FILES["sonogram"]["name"]);
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension'];
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file);

2 个答案:

答案 0 :(得分:2)

通过连接'/',您告诉Windows它在另一个目录中。因此,该文件正在尝试移动到,例如“videos / filename / studyId.mp4”。这意味着目录“filename”应该存在。如果要使用其他目录,请使用mkdir,或将斜杠更改为下划线或其他字符。

答案 1 :(得分:0)

您正尝试将文件移动到可能不存在的文件夹中。 您的代码会尝试将文件移至此位置(filename.txt和1234为$sudId):

videos/filename/1234.txt

而视频中可能不存在目录filename

然而,您可以先创建它:

$pathParts = pathinfo($_FILES["sonogram"]["name"]);
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension'];
mkdir('videos/'.$pathParts['filename'],0777,TRUE);
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file);