2010-05-08 2 views
0

내가 사이트를 구축하고 사용자가 자신의 MP3 파일을 업로드 할 수있는 내가 조금 문제로 실행에 공백이 업로드 : 업로드가 잘 작동PHP는 MP3 내가 해결할 수없는 파일 이름

,하지만 경우에만 사용자가 mp3 파일 이름에 공백이없는 mp3 파일을 선택합니다. 'My nice mp3 file.mp3'과 같은 파일은 $ _FILES [ 'file']의 NULL이됩니다. 이것이 서버 구성과 관련이 있습니까?

누구나 해결 방법이 있습니까? 단지 이름에 공백없이 mp3files을 업로드하는 사용자를 말하는 이외에, 그게 얼마나 영향을 미치지 않습니다 :-)

고맙습니다,

Maenny

+0

모든 브라우저에서 이러한 현상이 발생합니까/일부 클라이언트 측 스크립트를 사용하여 업로드 옵션을 향상시킬 수 있습니까? 예 : 다중 파일 선택을위한 플래시? –

+0

아니요 업로드 옵션을 향상시키지 않았지만 atm 필자는 Firefox 및 크롬에서만 스크립트를 테스트했습니다 – Maenny

답변

0

원격 (클라이언트) 파일의 파일 이름입니다 서버로 전송됩니다. 공백이 문제가 있다고 확신합니까?

+0

예 확실합니다. 2 답글을 참조하십시오. – Maenny

0

파일 이름을 urlencode()하십시오.

그래도 작동하지 않으면 rawurlencode()를 시도하십시오. 그래도 문제가 해결되지 않으면

, 나는 마크 : 다른 사용자가 말했듯이

+0

조언을 주셔서 감사합니다. – Maenny

+0

확실하게 : 인코딩을 정확히 어떻게 처리 하시겠습니까? 즉, 내가 언제 urlencode()해야합니까? 나는 과 action = "myscript.php"를 가진 폼을 가지고있다. myscript.php에서 저는 $ _FILES [ 'file']을 사용합니다. $ _FILES-var을 인코딩해야합니까? – Maenny

+0

이것은 아마도 PHP 문제가 아닙니다. 이게 Windows에 있습니까? 특정 버전의 IE에는 알려진 문제가 있습니다. 이것이 문제라면 PHP는 파일을 가져 오지 않습니다. –

1

, 그것은 아마 문제를 일으키는 공간이 아니다 오프입니다. 내 첫 번째 생각은 PHP의 upload_limit가 충분히 높게 설정되었는지 확인하는 것입니다. 또한 사용자가 파일을 호출 한 것과 관계없이 파일 이름을 서버에 저장해서는 안되며 서버를 통해 잠재적 인 보안 허점이 발생할 위험이 너무 큽니다.

그러나이 문제를 진단하려면 확인하는 MP3 파일을 만드는 것이 좋습니다. 공백이있는 이름과 공백이없는 이름을 각각 2 부씩 만듭니다. 그리고 공백 문자가 없는지 확인하십시오. 그렇다면 최소한 문제의 원인을 분명히 찾았습니다. 그렇지 않다면 그 원인을 제거하고 다른 곳을 볼 수 있습니다.

+0

정확히 그랬습니다. 공백이있는 동일한 파일이 제대로 작동하지 않았고, 완벽하게 작동하지 않았습니다. 그리고 예, 서버에 업로드 된 모든 파일의 이름을 바꿉니다. 그러나 그럼에도 불구하고 NULL이 $ _FILES [ 'file'] 인 경우 이름을 바꿀 필요가 없습니다 ...그리고 나는 PHP의 upload_limit를 스크립트의 파일 크기 제한의 두 배로 설정했습니다 ... – Maenny

+0

php.ini 설정 file_uploads가 On으로 설정되어 있습니까? 이것이 일어날 수있는 가능한 이유가 없어졌습니다. –

+0

물론 그렇습니다. 그렇지 않다면 file_upload는 전혀 작동하지 않을 것입니다. 그렇습니까? – Maenny

0

공백으로 인해이 문제가 발생하지 않습니다. 내 웹 사이트에 MP3 업 로더가 있는데 공백에 문제가 없습니다. "Test Name.mp3"으로 테스트했으며 정상적으로 작동했습니다.

http://www.the-mag.me.uk/Music/Articles/Item/Add-Your-Music/

당신이 잠재적 인 문제를 진단 $ _FILES 배열의 내용을 덤프 시도하고 거기에 아무것도 당신에게 단서를 제공하는지 확인 도움이됩니다.

print_r($_FILES); 
+0

print_r ($ _ FILES)의 결과는 NULL이지만, 이름에 공백이있는 경우에만 말합니다. – Maenny