2

従来のASPを使用して、サーバー側からbase64ファイルをイメージとして保存しようとしています。私が欲しいのは、ファイルを特定の場所に自動保存してファイル名を付けることです。これで、その側面をうまくコーディングできます。ただし、最初にブラウザでレンダリングしないと、画像を保存するためのコードを取得できません。私が使用しているスクリプトは自動エクスポートであり、ユーザー入力がないため、これは機能しません。

ウェブページにレンダリングされ、画像を保存する場所をユーザーに尋ねるコードがまだ続きます。繰り返しになりますが、自動保存する必要があります(ユーザー入力なし)

base64String ="base64 code goes here - Wont add it as its huge amount of text"

Set tmpDoc = Server.CreateObject("MSXML2.DomDocument")
Set nodeB64 = tmpDoc.CreateElement("b64")
nodeB64.DataType = "bin.base64" ' stores binary as base64 string
nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma)

vehicleAuditName= "Audit1"

With Response
   .Clear
   .ContentType = "image/png"
   .AddHeader "Content-Disposition", "attachment; filename=" & vehicleAuditName & ".png"
   .BinaryWrite nodeB64.NodeTypedValue 'get bytes and write
   .end
End With
4

3 に答える 3

3

次のように、adodb.streamオブジェクトを使用して、サーバー側に画像を保存します。

dim bStream : set bStream = server.CreateObject("ADODB.stream")

bStream.type = adTypeBinary

call bStream.Open()

call bStream.Write( binData )

call bStream.SaveToFile( FullName, adSaveCreateOverWrite)

call bStream.close()
set bStream = nothing
于 2013-01-31T15:23:45.533 に答える
2

base64文字列を受け取るサーバー側のコードは次のとおりです。これは稼働中のシステムから取得されたコードであるため、作成されたファイルに名前を付けるための一意の識別子として使用されるcarreg/auditdateなどの変数があることに注意してください。

function convBase64 (convVal, getCarReg, convType, AuditDate, AuditReference)
    base64String = convVal
    carReg = (UCase(getCarReg))
    carReg = (Replace(getCarReg," ",""))

    AuditDate= CDate(AuditDate) 
    ConvAuditDate = ((DatePart("d",AuditDate))& "_" & (DatePart("m",AuditDate)) & "_" & (DatePart("YYYY",AuditDate)))

    select case convType
        Case "Sig1"
        FileNameSuffix = "AuditorsSignature"
        Case "Sig2"
        FileNameSuffix = "BodyShopSignature"
        Case "Car"
        FileNameSuffix = "DamageCanvas"
    end select
    ImageFileName =  FileNameSuffix & "-" & carReg & "-" & ConvAuditDate & ".jpg"

        Set tmpDoc = Server.CreateObject("MSXML2.DomDocument")
        Set nodeB64 = tmpDoc.CreateElement("b64")
        nodeB64.DataType = "bin.base64" ' stores binary as base64 string
        nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma)


        dim bStream : set bStream = server.CreateObject("ADODB.stream")
        bStream.type =  1
        call bStream.Open()
        call bStream.Write( nodeB64.NodeTypedValue )
        call bStream.SaveToFile(Server.Mappath("NoneVehicleImages/" & AuditReference & "/" &  ImageFileName), 2 )
        call bStream.close()
        set bStream = nothing
        convBase64 = "\\iis_fdg$\AuditExport\NoneVehicleImages\"  & AuditReference & "\" & ImageFileName
end function
于 2014-09-19T13:27:47.667 に答える
-3

セキュリティ上の理由により、これを行うことはできません。Webページが、ユーザーの操作なしにローカルシステムのどこにファイルを保存するかをランダムに選択できるとしたら、混乱が生じます。

于 2013-01-31T15:22:04.683 に答える