ASP ABCUpload4.XForm 다중 파일업로드시 파일명이 증발해버립니다.
본문
<%
'Dim useUTF
Dim sqlStr, goodsIMGName
Session.CodePage = 65001
response.CharSet = "UTF-8"
useUTF = True
exec_mode = request("exec_mode")
w = Request("w")
Server.ScriptTimeOut = 3600
'파일업로드 기본 설정
Response.Expires = -10000
'Server.ScriptTimeOut = 300
Set theForm = Server.CreateObject("ABCUpload4.XForm")
theForm.Overwrite = True '같은 파일 있을 때 덮어쓰기 가능으로 설정
theForm.MaxUploadSize = 8000000 '8M 업로드 가능
theForm.AbsolutePath = True '절대 경로로 접근
theForm.Maxuploadsize = 1024*1024*20
theForm.CodePage = 65001
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
dim fileName,fileSize
Function GetUniqueName(strFileName, DirectoryPath)
Dim strName, strExt
'확장자가 없는 경우를 처리
if InstrRev(strFileName, ".") = 0 then
Response.write "<script language='javascript'>"
Response.Write " alert(""적절한 파일이 아닙니다. \n\n확장자가 있는지 확인해보세요"");"
Response.Write " history.back();"
Response.Write "</script>"
Response.end
End if
strName = Mid(strFileName, 1, InstrRev(strFileName, ".") - 1)
strExt = Mid(strFileName, InstrRev(strFileName, ".") + 1)
'asp파일 업로드 불가
if strExt = "asp" or strExt = "asa" or strExt = "inc" or strExt = "bak" then
Response.write "<script language='javascript'>"
Response.Write " alert(""적절한 파일이 아닙니다. \n\n다시 올려주세요"");"
Response.Write " history.back();"
Response.Write "</script>"
Response.end
End if
Dim bExist : bExist = True
Dim strFileWholePath : strFileWholePath = DirectoryPath & "\" & strName & "." & strExt
Dim countFileName : countFileName = 0
Do While bExist
If (fso.FileExists(strFileWholePath)) Then
countFileName = countFileName + 1
strFileName = strName & "(" & countFileName & ")." & strExt
strFileWholePath = DirectoryPath & "\" & strFileName
Else
bExist = False
End If
Loop
GetUniqueName = strFileWholePath
goodsIMGName = strFileName '최종파일이름0
End Function
Sub Exec_fileUp(newFile,deleteFile,deleteFilesize,DirectoryPath,num)
Set theField = newFile(num+1)
If theField.FileExists Then '만일 파일업을 했으면...
strFileName = theField.SafeFileName '파일 명
strFileSize = theField.Length '파일 사이즈
'파일명을 정한다.
strExt = Mid(strFileName, InstrRev(strFileName, ".") + 1)
strName = Replace(Date(),"-","") & Right(Session.SessionID,4)
strFileName = strName & "." & strExt
DirectoryPath = Server.MapPath(".") & "\bookstore\"
if theField.Length > 8000000 then
Response.Write "<script language=javascript>"
Response.Write " alert(""8M 이상의 사이즈인 파일은 업로드하실 수 없습니다"");"
Response.Write " history.back();"
Response.Write "</script>"
Response.end
Else
if Len(deleteFile) > 0 then '삭제 화일이 있을경우..
delfile = DirectoryPath & "\" & deleteFile
If (fso.FileExists(delfile)) Then
fso.DeleteFile(delfile) '파일을 지운다..
End if
End if
strFileWholePath = GetUniqueName(strFileName, DirectoryPath) '적합한 파일인지 체크한다.
theField.Save strFileWholePath '파일을 저장한다.
End if
fileUpload = strFileName
fileSize = strFileSize
Else
fileUpload = deleteFile
fileSize = deleteFilesize
End If
End Sub
'파일 업로드, 업로드 폼이 추가되면 아래 문장만 추가한다. 물론 파일명은 수정해야 한다.
CALL Exec_fileUp(theForm.item("bo_image"),"","",DirectoryPath,0)
CALL Exec_fileUp(theForm.item("bo_file1"),"","",DirectoryPath,0)
CALL Exec_fileUp(theForm.item("bo_file2"),"","",DirectoryPath,0)
http://blog.daum.net/thecoolman/3797336
위 블로그를 통해 파일 업로드할 경우 서버내 저장까지는 성공하였습니다.
insert나 update 문에서 서버내 저장된 파일명을 가지고 와서 저장 시켜줘야 하는데...
goodsIMGName 이라고 할 경우, 3중 하나의 파일명의 이름만 출력이 되고 있습니다.
파일명 3개를 추출해야하는데...
생소한 ASP이다 보니...어려움이 많이 있습니다.
ASP 언어로 개발 경험이 있으신 선배 회원님들께 고개숙여 조언을 구해보고자 합니다.
부탁드립니다.
!-->
답변 1
dim fileUpload
CALL Exec_fileUp(theForm.item("bo_image"),"","",DirectoryPath,0)
file1 = fileUpload
CALL Exec_fileUp(theForm.item("bo_file1"),"","",DirectoryPath,0)
file2 = fileUpload
CALL Exec_fileUp(theForm.item("bo_file2"),"","",DirectoryPath,0)
file3 = fileUpload
해결했네요 ㅠㅠ
답변을 작성하시기 전에 로그인 해주세요.