[PHP / HTML] 파일 업로드 구현시 MAX_FILE_SIZE 를 초과 할 경우 그냥 페이지를 찾을 수 없다고 하는데요.

망치의 이미지

<input type="hidden" name="MAX_FILE_SIZE" value="제한사이즈.." />

파일 업로드 구현시 HTML 에서 위같이 제한 용량을 설정해뒀을경우 사이즈를 초과하면 그냥 페이지를 찾을 수 없다는 에러가 떠버리는데 이걸 관리자가 원하는 페이지로 포워딩 되도록 할 방법 있을까요? 아예 목적 페이지에 접근조차 하지 않고 아파치 레벨에서 에러를 내버리는것같은데 .. 이렇다 보니 해당 목적 페이지에선 어떻게 받아서 처리할 방법이 없구요..

익명사용자의 이미지

3MB 제한이 걸린 php설정이라면 5MB를 업로드 성공했다 할지라도 php제한에 걸려버리겠고,
input 필드는 php POST액션시 무시되어 버리기때문에 input 필드로 MAX_FILE_SIZE를 넣어보았자 이 필드 역시 무시되겠고요.

그런 문제가 있다고 하더라도 그 페이지를 찾을 수 없다는 메시지는 좀 이해하기 힘드네요. 그냥 다른 문제가 있는게 아닐까요?

참고로, SWFUpload같은 경우는 POST하기 전에 업로더가 파일 용량을 체크할 수 있습니다. 파일 용량이 너무 커서 timeout이 되더라도 업로드를 계속하는지를 물어보는 창이 뜨더군요.

망치의 이미지

아. php 설정이라면 post size, upload size, memory limit 모두 100MB 까지 허용되도록 설정돼있습니다.

다만 필요에 의해 해당 허용치 내에서 업로드 용량을 제한해야 할 경우가 있거든요. html 상에서 제한하지 않으면 이미 업로드가 다 완료된다음, 즉 한참 기다린 다음에야 원하는 메세지를 출력 할 수 있기때문에 딱히 마음에 들지 않는 방법이구요.

ActiveX 나 플래쉬등을 이용하면 해결이 되겠지만 그냥 HTML 선에서 해결 할 방법이 없는지 알고싶거든요. JavaScript 를 이용할수도 있겠지만 이건 IE 외의 브라우저.. 파폭같은 브라우저에선 적용이 안되구요..

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

익명사용자의 이미지

> 다만 필요에 의해 해당 허용치 내에서 업로드 용량을 제한해야 할 경우가 있거든요. html 상에서 제한하지 않으면 이미 업로드가 다 완료된다음,
> 즉 한참 기다린 다음에야 원하는 메세지를 출력 할 수 있기때문에 딱히 마음에 들지 않는 방법이구요.

단지 HTML의 input필드로 업로드 용량을 제한할 수는 없을텐데요. POST의 method로 지정된 upload.php 스크립트는 업로드가 완료된 시점에서 input field MAX_FILE_SIZE를 얻을 수 있을 것이고요. 이미 업로드하느라 한참 시간이 지난 시점에서 에러 메시지가 출력되게 되겠지요. 그리고 그것은 위에서 쓰신대로 원하시는 방법이 아니겠구요. 제가 잘 못 알고 있는걸지도..

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

망치의 이미지

문제점을 다시 확인했습니다.

php.ini 설정의 업로드 제한이 기존에 30MB 로 돼있던걸 100MB 로 늘렸었습니다.

이러면서 자연스레 문제 해결이 됐더군요. 지금 다시 해보면서 업로드 용량 초과시 제대로 에러 핸들링이 되는걸 보면서 의아해 하다가 100MB 가 넘어가는 파일의 경우 마찬가지로 html 레벨에서 페이지를 안넘기는걸 보고 알게 됐습니다.

MAX_FILE_SIZE 로 설정된값이 서버 업로드 용량 제한 안쪽일 경우에만 에러 핸들링이 가능해지네요. 즉, 업로드 할 파일 용량이 서버업로드사이즈(php.ini) 제한보다는 작고 HTML 내 MAX_FILE_SIZE 보다 클 경우에만 파일전송을 완료후에 에러 핸들링이 됩니다. 서버업로드사이즈보다 큰 파일을 올리려 하면 MAX_FILE_SIZE 설정과는 무관하게 파일업로드 시도도 안하고 바로 페이지를 찾을 수 없다는 에러가 떠버립니다.

일단은 해결이 된셈입니다. ^^;
조언주신분들 감사드립니다

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.