Write binary data using javascript on the server

五迷三道 提交于 2019-12-23 18:45:35

问题


I'm trying to output a PDF using server side javascript (ASP). The current method I'm using is:

xfile=Server.MapPath(lib.fso.GetTempName())
xf=lib.fopen(xfile,"wb");
lib.fwrite(xf,this.buffer);
lib.fclose(xf);
outB = Server.CreateObject("ADODB.Stream")
outB.Type = 1
outB.Open()
outB.LoadFromFile (xfile)
Response.BinaryWrite(outB.Read())
outB.Close()
lib.fso.DeleteFile(xfile);

This works, but requires write access on the server. Is there a way to do the same thing without writing to a file?

I havn't been able to figure out how to convert the string this.buffer into a array of byte that I can then write using Response.BinaryWrite without writing to a file first.


回答1:


Why not simply use:-

Response.Write(this.buffer)

Assuming the codepage of the response is set correctly (I.e., its the same as in the Locale that the VBScript is running in) then Response.Write should do the same conversion that your StringToMultiByte is doing.

I suspect you've tried this and is hasn't worked. If so I really think you need to look into why that is rather attempt this strange usage of BinaryWrite. Currently your solution is going to kill your server.




回答2:


My solution was to use VBScript.

replace the above code with:

Response.BinaryWrite(StringToMultiByte(this.buffer));

and add this to the end of the file:

<script language="vbscript" runat="server">

function StringToMultiByte(S)
   Dim i, MultiByte
   For i=1 To Len(S)
   MultiByte = MultiByte & ChrB(Asc(Mid(S,i,1)))
   Next
   StringToMultiByte = MultiByte
End function

</script>


来源:https://stackoverflow.com/questions/1712211/write-binary-data-using-javascript-on-the-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!