当我尝试使用以下代码将我从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);
答案 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);