2011-11-30 7 views
1

다음 코드를 사용하여 html 형식에서 디렉토리로 가져 오는 파일의 이름을 변경하려고하면 오류가 발생합니다. $studyId을 연결하여 고유하게 만들려면 파일 이름을 변경해야합니다. 이 오류는 파일을 올바르게 인쇄합니다. originalName/studyId.extension. 나는 concatentation을하지 않고 그냥 move_uploaded_file의 두 번째 인수로 $_FILES["sonogram"]["name"]을 사용하면 "videos"폴더로 파일을 옮길 수 있습니다.이 구문을 사용하는 php.net에서 업로드 된 파일의 이름을 선택하는 예제가 있습니다. 어리석은 것으로 생각하고 있습니다. 나는 윈도우 시스템에 대해 언급해야한다. 어떤 도움을 주시면 감사하겠습니다.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]'서브 디렉토리가 실제로 존재하는지, 그리고 그 안에 물건을 옮기기 전에 쓰기가 가능한지 확인하십시오. m_u_f()는 디렉토리를 생성하지 않습니다. –

답변

2

'/'를 concatening하면 다른 디렉토리에 있음을 Windows에 알리는 것입니다. 예를 들어 "videos/filename/studyId.mp4"로 파일을 이동하려고합니다. 즉, "filename"디렉토리가 있어야 함을 의미합니다. 다른 디렉토리를 사용하려면 mkdir을 사용하거나 슬래시를 밑줄 또는 다른 문자로 변경하십시오.

0

아마도 존재하지 않는 폴더에서 파일을 이동하려고합니다. 코드는 ($sudId으로 filename.txt 및 1234)이 위치에 파일을 이동하려고합니다 : 디렉토리 filename 반면

videos/filename/1234.txt 

을 아마 비디오에 존재하지 않습니다.

$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); 
관련 문제