ASP (Classic) Example

Caution

For server security, please refer to the link below when handling this work.

[Software Security Weakness Diagnosis Guide]

1. Image / Video / File Upload

Caution

The file-upload portion of the sample code below is intentionally minimal and lacks proper security handling.

For the file-upload portion, use what is already in place inside your project, and refer to the code below for the integration portion only.

The file upload uses TABS Upload5. For an actual ASP integration, use the upload component already deployed in your production environment.

<%@ 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

' Saved file name (without path)
fileName = Upload.Form("file").ShortSaveName

Response.ContentType = "application/json"
Response.write("{""uploadPath"":""/upload/" & fileName & """}")
%>

2. HWP / Word / Excel Document Import

Caution

The file-upload portion of the sample code below is intentionally minimal and lacks proper security handling.

For the file-upload portion, use what is already in place inside your project, and refer to the code below for the integration portion only.

The file upload uses TABS Upload5. For an actual ASP integration, use the upload component already deployed in your production environment.

<%@ 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               = CreateGUID()
outputPath         = "C:\inetpub\wwwroot\output\" & uuid
relativeOutputPath = "/output/" & uuid

' Run document conversion
Dim wshShell, strCmd, result
strCmd = CONVERTER & " -pz -f " & FONTS & " """ & filePath & """ " & outputPath & " " & WORK
result = Exec(strCmd, 1)

If Not result = 0 Then
    Response.write "Error : " & result
Else
    DeleteExistFile(filePath)   ' delete original after success
End If
Set wshShell = nothing
Set Upload   = Nothing

' Read document.pb, serialize, then delete the .pb file
Dim binText
binText = ReadBinaryFile(outputPath & "\" & "document.pb")
DeleteExistFile(outputPath & "\" & "document.pb")

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

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
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")
    Dim bin, str, cnt
    BinaryStream.Type = adTypeBinary
    BinaryStream.Open
    BinaryStream.Position = 0
    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)
    ' Optimized binary-to-CSV string for embedding into JSON.
    Dim cl1, cl2, cl3, pl1, pl2, pl3, L
    cl1 = startPosition
    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 & ","
        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
%>

Related Information