2011-11-30 30 views
1

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

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

你可以张贴$ pathParts的的var_dump()和$文件?没有看到代码产生什么,我们只能猜测原因。同样,确保'videos/$ pathParts [filename]'subdir实际存在并且在将东西移入它之前是可写的。 m_u_f()不会为你创建目录。 –

回答

2

通过串联'/',你告诉Windows它在另一个目录。所以,该文件正试图移动到例如“videos/filename/studyId.mp4”。这意味着目录“文件名”应该存在。如果要使用其他目录,请使用mkdir,或将斜线更改为下划线或其他字符。

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); 
相关问题