UpLoadFile 매크로를 이용해서 서버에 파일을 올리게 할 경우
사용자가 다운로드를 받게 하려면 HyperLink 매크로를 이용해서 링크를 해주면 되는데..
문제는 이미지 파일(.gif)같은 경우는 다운로드를 하지 않고 브라우저에 바로 표시가 되지요.
또 오피스 문서들의 경우 오피스설치시 플러그인이 설치 되면 브라우져에 오피스 문서가 표시 됩니다.
이런 경우 브라우져에서 읽지 않고 무조건 다운로드를 받도록 하는 방법입니다.
방법은 링크를 걸지 않고 서버에 있는 파일을 바이너리로 읽어서 다운로드를 하도록 하는 건데
이지젠에서는 그러한 기능은 아직 지원되는게 없지요..
해서 아래 내용을 download.asp로 만들어서 IIS서버에 저장 합니다.
<%
' strFolder = Request("folder") ' 하위폴더경로를 사용할 경우
strFileName = Request("filename")
' strFilePath = server.MapPath("/")&"\!upload\" & strFolder & "\" ' 하위폴더경로를 사용할 경우
strFilePath = server.MapPath("/")&"\"
Response.ContentType = "application/unknown"
Response.AddHeader "Content-Disposition","attachment; filename=" & strFilename
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile strFilepath & strFilename
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
%>
그리고 이지젠 에서는 Navigate매크로를 이용해서 download.asp를 호출 하도록 해서 사용하면 됩니다.
위의 소스는 filename만 받도록 되어 있기 때문에 저장되는 파일이 ROOT경로에 있어야 됩니다.
ROOT가 아닌 다른 경로에 문서를 저장 했을 경우는 하위경로를 사용했을 경우라고 Remark되어 있는 부분을 풀고
strFilePath = server.MapPath("/")&"\" 이부분을 지워서 사용 하면 됩니다.
strFolder = Request("folder")
strFileName = Request("filename")
strFilePath = server.MapPath("/")&"\!upload\" & strFolder & "\"
이렇게 되겠지요.
그리고 파라메터도 filder로 하위 경로명을, filename에 문서명을 전달해 줘야 됩니다.
download.asp에서 사용하는 경로는 절대 경로를 사용하기 때문에 반드시 Document Home(C:\Inetpub\wwwroot)이나
그 하위 경로만을 사용할 필요는 없습니다.
예를 들어 UploadFile로 사용하는 경로가 c:\ezgendown이라는 경로를 사용 한다면
strFileName = Request("filename")
strFilePath = "C:\ezgendown\"
앞부분을 이렇게 수정해서 사용하면 됩니다.