오늘은 asp에서 이미지 파일을 업로드 할 때 여러가지 고려사항이 많은데 이런 여러가지 부분을 하나의 함수로 만들어 사용하면 편리할 것 같아 함수로 한번 만들어 보았습니다.
기준은 DextUpload 이며 save 하는 부분만 각각의 업로더에 맞춰 하시면 됩니다.
주요기능이
동일파일이 존재할 경우 rename
이미지 관련 파일만 업로드
입니다.
request 명은 uform 으로 사용했습니다.
set uform = server.createObject("DEXT.FileUpload")
* 소스코드
// parm_form_name : 현재 업로드 파일이 있는 form
// parm_form_name_old : 이미지변경일 수도 있기 때문에 이전 저장된 파일명
// parm_up_path : 업로드 서버 경로 위치
function DextUploadProcess(parm_form_name, parm_form_name_old, parm_up_path)
m_up_filename = parm_form_name
m_old_filename = parm_form_name_old
m_base_filepath = parm_up_path
m_file_width = ""
m_file_height = ""
m_file_name = ""
m_file_nameonly = ""
m_file_extonly = ""
m_file_path = ""
set fso = createObject("Scripting.FileSystemObject")
' olddata delete
'... cancel
'm_del = DextUploadDelete(parm_form_name_old, parm_up_path)
' uploading...
if len(uform(m_up_filename)) > 0 Then 'Upload File Exist
m_file_width = uform(m_up_filename).ImageWidth
m_file_height = uform(m_up_filename).ImageHeight
m_file_name = uform(m_up_filename).FileName
m_file_name = replace(m_file_name, " ", "_")
m_file_name = replace(m_file_name, "%20", "_")
m_file_path = m_base_filepath & "\" & m_file_name
if uform.FileExists(m_file_path) Then
if InStrRev(m_file_name , ".") <> 0 Then
m_file_nameonly = Left(m_file_name , InStrRev(m_file_name , ".") - 1)
m_file_extonly = Mid(m_file_name , InStrRev(m_file_name,"."))
if m_file_extonly = ".exe" or m_file_extonly = ".EXE" or m_file_extonly = "exe" or m_file_extonly = "EXE" or m_file_extonly = ".bat" or m_file_extonly = ".BAT" or m_file_extonly = ".com" or m_file_extonly = ".COM" or m_file_extonly = ".asp" or m_file_extonly = ".ASP" or m_file_extonly = ".aspx" or m_file_extonly = ".ASPX" or m_file_extonly = ".js" or m_file_extonly = ".JS" or m_file_extonly = ".vbs" or m_file_extonly = ".VBS" then
response.write "EXE File not support..."
response.end
end if
else
m_file_nameonly = m_file_name
m_file_extonly = ""
end if
i = 2
do while(1) '' 2013-03-15 수정 : "[" & i & "]"
m_file_path = m_base_filepath &"\"& m_file_nameonly & "_" & i & "" & m_file_extonly
if NOT uform.FileExists(m_file_path) Then
m_file_name = m_file_nameonly& "_" & i & "" & m_file_extonly
exit do
end if
i = i + 1
loop
end if
uform(m_up_filename).saveas m_file_path
end if
i = 0
is_ret_image = ""
if m_file_name = "" then is_ret_image = uform(m_old_filename) else is_ret_image = m_file_name end if
set fso = nothing
DextUploadProcess = is_ret_image
end function
// parm_form_del_name : 삭제할 파일명
// parm_path : 삭제할 서버 경로 위치
function DextUploadDelete(parm_form_del_name, parm_path)
set fso2 = createObject("Scripting.FileSystemObject")
m_del_filename = parm_form_del_name
m_del_base_filepath = parm_path
is_del = "NG"
' olddata delete
if len(uform(m_del_filename)) > 0 Then 'Del File Exist
m_del_file_path = m_del_base_filepath & "\" & uform(m_del_filename)
'd(m_del_file_path)
if uform.FileExists(m_del_file_path) Then
fso2.DeleteFile m_del_file_path
is_del = "OK"
'Response.write "Delete OK - " & is_del & "<br>"
else
' 404:존재하지 않는 파일
is_del = "404"
end if
end if
set fso2 = nothing
DextUploadDelete = is_del
end function
* 사용법
set uform = server.createObject("DEXT.FileUpload")
uform.CodePage = 65001
uform.DefaultPath = server.mappath("/")&"\upload\board"
' 등록
f_f_name1 = DextUploadProcess("f_f_name1", "f_f_name1_old", uform.DefaultPath)
' 삭제
call DextUploadDelete("f_f_name3_old", uform.DefaultPath)
보통 한번 업로드 한 것을 지우는 경우는 많지 않기 때문에 DextUploadProcess 을 사용하면 되며~
createObject 울 uform 아란 변수로 받았고, DextUploadProcess 함수 안에서도 uform 을 사용하니 유의해 주세요.
많이많이 이용해 주세요..~~
#ASP#DextUpload#업로드#이미지#파일
'프로그램 > ASP' 카테고리의 다른 글
문자열의 형태(한글,숫자,영문 등)을 확인하는 함수 (1) | 2021.01.14 |
---|---|
휴대폰,전화번호를 정상패턴('-') 을 넣어서 만들기 (0) | 2021.01.14 |
HTML 태그 없애기 strip (0) | 2021.01.14 |
UTF-8 방식을 asp 설정하기 (0) | 2021.01.13 |
ASP 엑셀(XLS, XLSX) 다운로드 시 셀 속성 지정 (0) | 2021.01.12 |