Q&A

  • 갱수님 파일업로드에서
팁에서 갱수님의 자세한 파일업로드 부분 잘보았습니다.



그런데 48k바이트 이상이 되니까 다음과 같은 에러가 나는 군요



--서버를 찾을 수 없거나 DNS 오류입니다.--



정말 치명적인 에러인데(요즘은 48k로 할수 있는게 없어서 ^^;)



소스부분중에 어느것을 수정하면 되는지요??



참고로 NT4.0에서 델파이 cgi가 돌아가고 있습니다.



수고스럽겠지만 이부분이 막혀서 아무것도 못하고 있네요



빠른 답변을 부탁 드립니다.



좋은 주말 보네세요...

1  COMMENTS
  • Profile
    갱수 2000.04.02 06:49
    송성준 wrote:

    > 팁에서 갱수님의 자세한 파일업로드 부분 잘보았습니다.

    >

    > 그런데 48k바이트 이상이 되니까 다음과 같은 에러가 나는 군요

    >

    > --서버를 찾을 수 없거나 DNS 오류입니다.--

    >

    > 정말 치명적인 에러인데(요즘은 48k로 할수 있는게 없어서 ^^;)

    >

    > 소스부분중에 어느것을 수정하면 되는지요??

    >

    > 참고로 NT4.0에서 델파이 cgi가 돌아가고 있습니다.

    >

    > 수고스럽겠지만 이부분이 막혀서 아무것도 못하고 있네요

    >

    > 빠른 답변을 부탁 드립니다.

    >

    > 좋은 주말 보네세요...



    안녕하세요^^



    지금 테스트 해봤는뎅 3Mb가도 한 12초 정도걸리지만(-.-) 업로드가 되네요...^^



    소스보면 제가 오타가 난게 있구요

    unit main;



    interface



    uses

    Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables,Graphics, Jpeg;





    type

    TWebModule1 = class(TWebModule)

    procedure WebModule1WebActionItem1Action(Sender: TObject;

    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    WebModule1: TWebModule1;



    implementation



    {$R *.DFM}



    procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;

    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

    var

    strSaveAs, strSaveFrom, strSep, strReceived, strAdd: String ;

    iTmp, iTotal: integer ;

    F: File of char ;

    Ticks: dword ;

    begin

    iTotal := Request.ContentLength ;

    strReceived := Request.Content ;

    Ticks := GetTickCount ;



    if Length (strReceived) < iTotal then

    repeat

    strAdd := Request.ReadString (iTotal - Length(strReceived)); <= 오타가 났었네요,,,-.-

    iTmp := Length (strAdd) ;

    if iTmp > 0 then

    begin

    ticks := GetTickCount ;

    strReceived := strReceived + strAdd ;

    end ;

    until (Length (strReceived) >= iTotal) or (GetTickCount - Ticks > 3000) ;



    iTmp := pos (#13#10, strReceived) ;



    if iTmp <= 1 then

    raise Exception.Create ('파일형태전송안됨') ;

    StrSep := Copy (strReceived,1, iTmp - 1) ;

    delete (strReceived, 1, iTmp + 1) ;

    iTmp := pos ('name="', strReceived) ;



    if iTmp = 0 then

    raise Exception.Create ('Could not find name to save file as') ;

    delete (strReceived, 1, iTmp + 5) ;

    iTmp := pos ('"', strReceived) ;



    if iTmp <= 1 then

    raise Exception.Create ('저장파일이름 못찾음') ;

    strSaveAs := Copy (strReceived, 1, iTmp - 1) ;

    iTmp := pos ('filename="', strReceived) ;



    if iTmp = 0 then

    raise Exception.Create ('업로드 파일 못찾음') ;

    delete (strReceived, 1, iTmp + 9) ;

    iTmp := pos ('"', strReceived) ;



    if iTmp <= 1 then

    raise Exception.Create ('업로드파일이름 못찾음') ;



    strSaveFrom := Copy (strReceived, 1, iTmp - 1) ;

    delete (strReceived, 1, iTmp + 1) ;

    for iTmp := Length (strSaveFrom) downto 1 do

    case strSaveFrom[iTmp] of

    '.': begin

    strSaveAs := StrSaveAs + Copy (strSaveFrom, iTmp, Length (strSaveFrom)) ;

    break ;

    end ;

    '', '/', ':': break ;

    end ;



    iTmp := pos (#13#10#13#10, strReceived) ;



    if iTmp = 0 then

    raise Exception.Create ('Could not find start of file to save') ;

    delete (strReceived, 1, iTmp + 3) ;

    iTmp := pos (#13#10+strSep+ '--', strReceived) ;



    if iTmp <= 1 then

    raise Exception.Create ('Could not find end of file to save') ;

    SetLength (strReceived, iTmp - 1) ;



    AssignFile (F, strSaveAs) ;

    Rewrite (F) ;



    for iTmp := 1 to Length (strReceived) do

    Write (f, strReceived[iTmp]) ;

    CloseFile (F) ;



    response.content := '저장되었습니다.';





    end;



    end.

    --------------------------------------------------------------------------------

    저장된 파일은 c:winntsystem32 폴더에 $$UPLOAD.전송한 확장자명..

    으로 저장이 됩니다.

    저도 NT IIS 서버를 사용했구요 ISAPI방식으로 테스트 해봤구요. 일단 로컬해서 해봤구요.



    > --서버를 찾을 수 없거나 DNS 오류입니다.-- 오류는 일단 500번에러가 발생하면 서버프로그램에서 에러가 발생한건데 위와 같은 에러는 글쎄요.. 웹서버가 죽었거나 컴퓨터가 죽어있는데 에러가 발생할텐데....



    그럼 서버가 부하가 걸려서 죽는건가요? 이 허름한 소스 상에서는 저장이 되니 제가 어떻게 수정해야할지에 대해서는 뭐라 말씀드릴수가 없겠네요..



    에궁 초보라성....-.-

    꼭 해결하세요^^





    • 초보자
    • 2000.04.03 07:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.04.04 04:38
      초보자 wrote: > 1+(1+1/2)+(1+1/2+1/3)+(1+1/2+1/3....1/n) > 이거.. > 어케 하나여? > 꼭 알켜 주세...
    • 최용일
      2000.04.03 18:54
      안녕하세요. 최용일입니다. 흠.... 여기는 학교에서 내준 숙제하는 곳이 아닌데요. 다음부터 이런건 ...
    • Musa L.
    • 2000.04.03 05:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 차카게살자
      2000.04.04 02:17
      Musa L. wrote: > 고수님들께 공부를 시작하기 전에 원초적인 것을 묻자옵니다. > > 책을 보았더니 ...
    • 홍세비
      2000.04.03 05:43
      Musa L. wrote: > 고수님들께 공부를 시작하기 전에 원초적인 것을 묻자옵니다. > > 책을 보았더니 ...
    • 소지영
      2000.04.03 07:09
      안녕하세요. 소지영 입니다. 델파이코리아(http://www.delphikorea.com)의 Q&A에 답변해 놓았습니다. ...
    • 류종택
      2000.04.02 13:18
      시작프로그램 폴더 말고.. 래지스트리를 이용하는 방법도 있습니다.. 아래를 참고하세요.. From 류....
    • 이용현
      2000.04.02 14:39
      많은 도움이 댔어요 감사합니다... 감사합니다.. 류종택 wrote: > 시작프로그램 폴더 말고.. > 래지...
    • 최용일
      2000.04.02 09:46
      안녕하세요. 최용일입니다. 윈도우 시작 프로그램 메뉴에 있는 항목들은 모두 바로가기 파일들입니다. ...
    • 이용현
      2000.04.02 14:39
      많은 도움이 댔어요 감사합니다... 감사합니다.. 최용일 wrote: > 안녕하세요. 최용일입니다. > ...
    • 김동길
    • 2000.04.02 07:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • HART
      2000.04.12 21:57
      저기 혹시 imemode가 imDisable인 상태가 아닐까 하는데.. 이 상태가 되면 영문만 입력됩니다. 그리고 중용...
    • 나요
    • 2000.04.02 07:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송성준
    • 2000.04.02 05:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 갱수
      2000.04.02 06:49
      송성준 wrote: > 팁에서 갱수님의 자세한 파일업로드 부분 잘보았습니다. > > 그런데 48k바이트 이상이...
    • 김수보
      2000.04.03 19:58
      아마도 100% 메모리 핸들링에러입니다. 즉 A.Create로 실행시에 메모리에 컨트롤을 생성시킨 경우 반드시...
    • 윤진석
    • 2000.04.02 03:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.02 03:46
      안녕하세요. 최용일입니다. DB와는 별 상관이 없는데요. 그냥 동적으로 생성해서 붙여주시면 됩니다. ...
    • 김민석
      2000.04.02 00:53
      한개의 변수를 이용해서 오늘 날짜와 시간을 구할 수 있습니다. 코딩은 다음과 같습니다. procedure ...
    • 구창민
      2000.04.02 00:51
      이수정 wrote: > 안녕하세요... > > DateTimePicker 라는 컴포넌트를 이용해서 날짜와 시간을 구할수는...
    • 이현우
    • 2000.04.01 23:21
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.01 23:28
    • 이현우
      2000.04.01 23:37
    • 최용일
      2000.04.01 23:47
    • 이현우
      2000.04.02 00:02
    • 최용일
      2000.04.03 21:11
    • 최용일
      2000.04.01 23:21
      안녕하세요. 최용일입니다 익스플로러에 보시면 보기메뉴에 인코딩이란 메뉴가 있습니다. 여기에서 ...
    • 이현우
      2000.04.01 23:43
      답변주셔서 감사합니다 asp 에서 isapi dll로 값이 넘어가고 이곳에서 일를 처리하고 일반 app로넘어가 ...
    • 이종행
    • 2000.04.01 22:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Qtecman@chullian.net
      2000.04.03 00:44
      장진웅이라고 합니다... FA에 대한 프로토콜 문제라면 ..고민이 많으시겠군요.. 먼저 미쓰비시 기종과 골...
    • 혜진이
    • 2000.04.01 22:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.01 22:33
      안녕하세요. 최용일입니다. TJpegImage컴포넌트를 사용해보세요. 컴포넌트 팔레트에는 없지만 델파이 ...
    • 오이군
    • 2000.04.01 21:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김형선
      2000.04.01 22:01
      오이군 wrote: > 비베의Doevents나 파워빌더의 yield와 같이... > 다른 프로세스에게 시간을 주기위한 함...
    • 이미나
      2000.04.18 02:22
      김형선 wrote: > 오이군 wrote: > > 비베의Doevents나 파워빌더의 yield와 같이... > > 다른 프로세스에...
    • 이광민
    • 2000.04.01 20:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모승열
      2000.04.02 03:05
      Re : 안녕하세요 델파이에서 따옴표 표시는 ''두개로 합니다. 그러니까 안에 따옴표를 넣고 싶으면 ' '' ...