주의사항

가이드로 제공되는 아래 코드는 샘플 코드로서, 리소스 관리나 보안 관련 처리에 대해서는 미흡할 수 있습니다.

단순 참고용으로만 사용해주세요.


파일 업로드에는 TABS Upload5를 사용하였습니다.

실제 ASP 연동부분 작업시에는 운영환경에서 사용하시던 업로드 컴포넌트를 그냥 사용하시고 관련 코드를 수정해주시면 됩니다.


1. 이미지, 동영상, 파일 업로드

<%@ CodePage=65001 Language=VBScript %>
<% Option Explicit %>
<%
    On Error Resume Next 
    Dim UPLOAD_PATH
    UPLOAD_PATH = "C:\inetpub\wwwroot\upload"
 
    Dim Upload, fileName
    '업로드를 처리할 오브젝트를 생성합니다.
    Set Upload = Server.CreateObject("TABSUpload4.Upload")
    Upload.CodePage = 65001


    '업로드를 시작합니다.
    Upload.Start "C:\TEMP"
    Upload.Save UPLOAD_PATH, False

    '저장된 파일 경로 (경로는 제외)
    fileName = Upload.Form("file").ShortSaveName

    '결과를 json 형태로 반환
    Response.ContentType = "application/json"
    Response.write("{""uploadPath"":""/upload/" & fileName & """}")
%>

2. HWP, MS Word, LibreOffice 문서 임포트


<%@ CodePage=65001 Language=VBScript %>
<% Option Explicit %>
<%
    On Error Resume Next 
    Dim CONVERTER, FONTS, WORK, UPLOAD_PATH
    CONVERTER = "C:\workspace\seimporter\sedocConverter\sedocConverter.exe"
    FONTS = "C:\workspace\seimporter\fonts"
    WORK = "C:\workspace\seimporter\tmp"
    UPLOAD_PATH = "C:\inetpub\wwwroot\upload"
  
    
    Dim filePath, outputPath, uuid, relativeOutputPath


    Dim Upload
    '업로드를 처리할 오브젝트를 생성합니다.
    Set Upload = Server.CreateObject("TABSUpload4.Upload")
    Upload.CodePage = 65001

    '업로드를 시작합니다.
    Upload.Start "C:\TEMP"
    Upload.Save UPLOAD_PATH, False

    '저장된 파일 경로
    filePath = Upload.Form("file").SaveName

    'UUID 생성 (unique path)
    uuid = CreateGUID()

    outputPath = "C:\inetpub\wwwroot\output\" & uuid
    relativeOutputPath = "/output/" & uuid

    '문서변환
    Dim wshShell, strCmd, result
    'Set wshShell = CreateObject( "WScript.Shell" )
    strCmd = CONVERTER & " -pz -f " & FONTS & " """ & filePath & """ " & outputPath & " " & WORK 
    'result = wshShell.Run(strCmd, 0, true)
    result = Exec(strCmd, 1)

    If Not result = 0 Then
        Response.write "Error : " & result
    Else
        '변환이 완료되면 원본문서 삭제
        DeleteExistFile(filePath)
    End If

    Set wshShell = nothing
    Set Upload = Nothing


    'document.pb 파일을 serialized해서 전달
    Dim binText
    binText = ReadBinaryFile(outputPath & "\" & "document.pb")

    'pb파일은 읽어들인 후 삭제
    DeleteExistFile(outputPath & "\" & "document.pb")
    
    '결과를 json 형태로 반환
    Response.ContentType = "application/json"
    Response.write("{""importPath"":""" & relativeOutputPath & """, ""serializedData"":" & binText & "}")

    Function Exec(c, t)
        Dim s, e : Set s = CreateObject("WScript.Shell") : Set e = s.Exec(c)
        Do While e.Status = 0
            Call s.Run("waitfor /t 1 OneSecond", 0, True)
            t = t - 1
            If 0 >= t Then
            Call s.Run("taskkill /t /f /pid " & e.ProcessId, 0, True)
            Exit Do
            End If
        Loop
        Set Exec = e
    End Function

    'UUID 생성
    Function CreateGUID()
        Dim tmpTemp
        tmpTemp = Right(String(4,48) & Year(Now()),4)
        tmpTemp = tmpTemp & Right(String(4,48) & Month(Now()),2)
        tmpTemp = tmpTemp & Right(String(4,48) & Day(Now()),2)
        tmpTemp = tmpTemp & Right(String(4,48) & Hour(Now()),2)
        tmpTemp = tmpTemp & Right(String(4,48) & Minute(Now()),2)
        tmpTemp = tmpTemp & Right(String(4,48) & Second(Now()),2)
        CreateGUID = tmpTemp
    End Function

    Function DeleteExistFile(filePath) 
        Dim fso, result 
        Set fso = CreateObject("Scripting.FileSystemObject") 
        If fso.FileExists(filePath) Then 
            fso.DeleteFile(filePath) '파일이 존재하면 삭제합니다. 
            result = 1 
        Else 
            result = 0 
        End If 
        DeleteExistFile = result 
    End Function 

    Function ReadBinaryFile(FileName) 
        Const adTypeBinary = 1 
        Const adTypeText = 2
        
        'Create Stream object 
        Dim BinaryStream 
        Set BinaryStream = CreateObject("ADODB.Stream") 
        Dim bin, str, cnt

        'Specify stream type - we want To get binary data. 
        BinaryStream.Type = adTypeBinary 

        'Open the stream 
        BinaryStream.Open 
        
        'Load the file data from disk To stream object 
        BinaryStream.Position = 0 'Set the stream position to the start
        BinaryStream.LoadFromFile FileName 

        cnt = 1
        Do  
            bin = BinaryStream.Read(1024)

            if Not isNull(bin) then
                if cnt = 1 then
                    str = str & BinaryToString(bin, 17)
                Else
                    str = str & "," & BinaryToString(bin, 1)
                end if
                cnt = cnt + 1
            end if
        Loop While Not IsNull(bin)  
    
        ReadBinaryFile = "[" & str & "]"
        BinaryStream.Close
        Set BinaryStream = Nothing
    End Function 

    Function BinaryToString(Binary, startPosition)
          'Antonin Foller, http://www.motobit.com
          'Optimized version of a simple BinaryToString algorithm.
          
          Dim cl1, cl2, cl3, pl1, pl2, pl3
          Dim L
          cl1 = startPosition  '1 or 17
          cl2 = 1
          cl3 = 1
          L = LenB(Binary)
          
          Do While cl1<=L
            pl3 = pl3 & CStr(AscB(MidB(Binary,cl1,1)))
            If cl1 < L Then
                pl3 = pl3 & ","
            End if
            cl1 = cl1 + 1
            cl3 = cl3 + 1
            If cl3>300 Then
              pl2 = pl2 & pl3
              pl3 = ""
              cl3 = 1
              cl2 = cl2 + 1
              If cl2>200 Then
                pl1 = pl1 & pl2
                pl2 = ""
                cl2 = 1
              End If
            End If
          Loop
          BinaryToString = pl1 & pl2 & pl3
    End Function
%>