Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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

주의사항

가이드로 제공되는 아래 코드 중 파일 업로드 부분은 샘플 코드로서 보안 관련 처리가 미흡합니다.

파일 업로드 부분은 프로젝트 내부에서 사용하시는 부분을 그대로 사용하시고 아래 코드를 참고하셔서 연동 부분을 처리해주세요. 

파일 업로드에는 TABS Upload5를 사용하였습니다. 실제 ASP 연동부분 작업시에는 운영환경에서 사용하시던 업로드 컴포넌트를 그냥 사용하시면 됩니다.


import.asp
<%@ 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, Word, Excel 문서 임포트

주의사항

가이드로 제공되는 아래 코드 중 파일 업로드 부분은 샘플 코드로서 보안 관련 처리가 미흡합니다.

파일 업로드 부분은 프로젝트 내부에서 사용하시는 부분을 그대로 사용하시고 아래 코드를 참고하셔서 연동 부분을 처리해주세요. 

파일 업로드에는 TABS Upload5를 사용하였습니다. 실제 ASP 연동부분 작업시에는 운영환경에서 사용하시던 업로드 컴포넌트를 그냥 사용하시면 됩니다.

import.asp
<%@ 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
%>
  • No labels