프로그램/ASP

이미지 업로드

네오류이 2021. 1. 14. 11:58
728x90
반응형

오늘은 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#업로드#이미지#파일

728x90
반응형