2012-02-20 3 views
1

고객 용 CMS를 만들었습니다. 그가 할 수있는 일 중 하나는 PDF 파일을 업로드하는 것입니다. 우리는 이것을 철저히 테스트했으며 버그가 발생하지 않았습니다. 그러나 그는 아무 것도 업로드 할 수 없습니다. 파일은 업로드되지 않습니다. 그의 브라우저는 로딩을 계속합니다.파일을 업로드 할 수 없습니다.

내 고객은 파이어 폭스 (어떤 버전인지는 모르겠지만 문제가되지 않을 것이라고 생각한다)를 사용하고 그가 업로드하려고 시도하는 PDF 파일은 약 5MB이고 극단적 인 것은 아니다.

파일을 업로드 할 때 브라우저가 요청을 끝내지 않는 이유가 있습니까? 파일이 손상된 것 같지 않습니다.

if(!empty($_FILES['pdf'])) { 
    $path = '../pdf/'; 
    $filename = $_FILES['pdf']['name']; 

    if(!empty($assoc['pdf'])) { 
     $oldfile = $path.$assoc['pdf']; 

     if(file_exists($oldfile)) { 
      unset($oldfile); 
     } 
    } 

    $success = move_uploaded_file($_FILES['pdf']['tmp_name'], $path.$filename); 
} 

편집 :

은 여전히 ​​가치가 게시 문제가 내 스크립트에있다 생각 ...하지만하지 않습니다 그는 나에게 그가 업로드하려고 PDF 파일을 보냈습니다. 업로드하는 데 약 10 초가 걸렸습니다 ... 나는 그에게 스피드 테스트를 할 수있는 링크를 제공하고 있습니다, 롤.

+0

HTML 양식의 모양은 무엇입니까? 귀하는 iframe, 후속 페이지, PHP_SELF 또는 AJAX를 통해 게시하고 있습니까? 이러한 상황이 어떻게 진행되는지에 따라 다른 프로세스가 업로드를 방해 할 수도 있습니다. 예를 들어 iframe에 업로드하고 업로드하는 동안 대상 프레임이 리디렉션되거나 다시로드되는 경우 Firefox는 무한정 계속 게시물을 시도하지만 성공하지 못합니다. –

+0

그/그녀는 아마도 그걸 시도 할 시간이 없었으며, "그게 효과가 없다"변명을함으로써 시간을 기다리고 있습니다. 우리가 가진 가장 흔한 실수 인 것 같습니다! :) – Dave

+0

코드에 인쇄물을 추가하여 파일이 실제로 업로드되고 있는지 확인하십시오. '$ success'가 true로 설정 되었습니까? 아니면 브라우저가 응답하지 않습니까? – Robert

답변

1

내가보기에 두 가지 문제가있을 수 있지만 정확한 문제는 아니지만 답을 이끌어 낼 수 있습니다.

# 1. POST_MAX_SIZE 또는 UPLOAD_MAX_FILESIZE가 충분하지 않습니다.

PHP 프로그래머가 종종 잊어 버리는 두 가지 구성이 있는데, 이것은 아마도 가장 분명한 문제 일 것입니다. 테스트는 끝났지 만 대용량 파일로 끝났습니까? htaccess로 또는 php.ini 파일을 사용하여

당신이

  1. 이 upload_max_filesize
  2. post_max_size을

의 PHP의 설정을 무시하고 그들에게 예를 들어 20M를 제공 할 수 있습니다 (서버 구성에 따라) :

/*.HTACCESS*/ 
php_value upload_max_filesize 20M 
php_value post_max_size 20M 

/*PHP.INI*/ 
upload_max_filesize = 20M 
post_max_size = 20M 

이러한 variabl을 사용할 수 없으므로 ini_set()을 사용할 수 없습니다. PHP는 처리를 시작하기 전에 사용되므로 문맥에서 쓸모 없게 될 것입니다.

# 2. enctype이 multipart/form-data가 아닙니다.

매우 어려울 수도 있지만 양식의 enctype 속성을 "multipart/form-data"로 설정하는 것을 잊었을 수 있습니다. 따라서 아무것도 서버로 보내지 않을 수도 있습니다. 하지만 당신이 광범위하게 테스트했다고 말한 이후로 이것이 당신의 쟁점이라고 생각하지 않습니다.

은 확인 :

좋은 수 있도록하지만, 때때로, 우리는 물건을 주변에 이동하고 (너무 나에게 발생) 테스트 잊지 내가 뭔가하기 전에 일을 확신했다 지금은없는, 그래서 그것을 확인 행운을 빌어 요

+0

답변 해 주셔서 감사합니다.하지만 실망시켜야합니다. 나는 upload_max_filesize가 약간 낮은 (8MB)지만 여전히 업로드하려는 파일 (6MB)을 업로드하는 데 충분하다는 것을 알아 냈습니다. 게다가 서버 문제라면 동일한 파일을 업로드 할 수 없으며 파일을 업로드 할 수 있다고 명시했습니다. 또한 enctype이 정확합니다. –

+0

post_max_size도 확인 했습니까? 둘 다 연결되어 있습니다 ... –

+0

post_max_size was well. –

0

클라이언트가 Firefox와 다른 브라우저에서 파일을 업로드하도록하십시오. 다른 브라우저에서도 작동하는 경우 클라이언트 Firefox profile folder에있는 파일 MimeTypes.rdf을 삭제 (또는 테스트 목적으로 이름 바꾸기/이동) 해보십시오.

나중에 PDF 업로드가 작동하는 경우 2007 년에 처음보고 된 a Firefox bug (2006 년보고 된 basically the same here)이 발생했습니다. 요컨대, 사용자가 파일을 다운로드하는 웹 사이트는 다운로드 한 파일의 확장과 관련하여 MimeTypes.rdf 파일을 악의적으로 또는 우연히/무의식적으로 손상시킬 가능성이 있습니다. 당신이 할 수있는

것들 :

  1. Vote for the Firefox bug!
  2. 빠른 수정

    는 지금 클라이언트에 대한 작업을 얻을 : 사용자 (들)가 자신의 MimeTypes.rdf 파일을 삭제합니다. Firefox는 다음 시작시에 새로운 "새로운"것을 만들지 만 사용자가 시간이 지남에 따라 생성 한 모든 MIME 유형/응용 프로그램 연결이 지워집니다. 또한 사용자가 MimeTypes.rdf 파일을 다시 손상시키는 다른 웹 사이트에서 다음 PDF 파일을 다운로드 할 때까지만 도움이됩니다.
  3. "사용자 에이전트"헤더를 사용하여 파일이 Firefox에서 업로드되었는지 확인하십시오. 그렇다면 MIME 유형이 동의하려는 내용과 일치하지 않는 경우 파일 이름의 확장자를 다시 확인하고 허용되는 파일 형식 (귀하의 경우 ".pdf")과 일치하는 확장명을 가진 파일을 수락하십시오.
관련 문제