Chrome не соблюдает имя файла ado.stream - PullRequest
1 голос
/ 01 июня 2011

Приведенный ниже код ASP захватывает содержимое файла (thisoutfile, в котором в качестве имени файла указан GUID) и передает его в браузер, предоставляя предложенное имя файла для сохранения в виде.Это работает во всех браузерах, кроме chrome, где предлагаемое имя файла является именем самого скрипта, даже если имя файла (thisfname) является одним словом.Если вы на самом деле сохраните файл в формате xls или pdf, тогда он сохранится. ОК.

Есть идеи, почему?

Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set f=fs.GetFile(thisoutfile)

Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open()
adoStream.Type = 1
adoStream.LoadFromFile(f.Path)
dataSize = f.size
Response.Buffer = true
Response.CharSet = "UTF-8"
Response.clear
select case ext
    case "xls"
        response.contentType="application/vnd.ms-excel"
    case else
        Response.ContentType = "application/x-unknown" ' arbitrary
end select
Response.AddHeader "Content-Length", dataSize
Response.AddHeader "Content-Disposition","attachment;filename=""" & thisfname & ""

Response.flush
do while not adoStream.eos
    Response.BinaryWrite adoStream.Read(1024 * 8)
    Response.flush
loop
Response.End()
adoStream.close
set adoStream=nothing
set f=nothing
set fs=nothing

1 Ответ

2 голосов
/ 01 июня 2011

В заголовке Content-Disposition отсутствует двойная кавычка, и кажется, что Chrome не так уж прост Измените эту строку кода на

Response.AddHeader "Content-Disposition","attachment;filename=""" & thisfname & """"
...