2011-05-04 17 views
10

Utilizo lo siguiente para transmitir un archivo (generalmente Excel o PDF) al navegador. Funciona al establecer la ubicación de un iFrame oculto en un controlador de descarga que contiene el código.ie9 se cuelga al transmitir un archivo al navegador

t funciona bien en Firefox, etc. y en algunas instancias de IE9, pero no en otras instancias de IE9.

Donde no funciona, aparece la barra de información, pero no hay ninguna opción para Abrir, solo Guardar o Cancelar.

La barra de información se bloquea y no se puede cerrar o cancelar.

También se cambia la URL para que el punto antes del prefijo del archivo (por ejemplo, .xls o .pdf) se cambie a un guión bajo.

una típica correcta es

/export_templates/rawdata/[email protected][email protected]{875CFEE5-23D4-42CB-8885-7A9D493DC616}.pdf&fname=Quick%5Fpoll.pdf 

Alguien ha visto esto o encontrado una solución. No hay complementos habilitados, no hay av deteniéndolo. Comparamos la configuración en IE, av y firewall en máquinas donde funciona y no funciona, y son idénticas.

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 
Response.ContentType = "application/x-unknown" ' arbitrary 
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 
+1

Tengo el mismo problema y tampoco tengo ninguna sugerencia :( – Johnny

+0

Tengo el mismo problema y tampoco tengo sugerencias, pero una observación más. Tengo la misma base de código ejecutándose en IIS express y en IIS 7.5. con IE9 no tiene el problema con IIS express, pero sí con IIS 7.5. Otras computadoras con IE9 no tienen problemas con ninguno de los servidores. – Knox

+0

¿Ha intentado configurar el ContentType a un valor específico? Por ejemplo, si se trata de un PDF luego configúrelo en * application/pdf *. – James

Respuesta

3

veo dos problemas potenciales con el código anterior y dos "circunstancias atenuantes" potenciales:

1.) No se cita el nombre del archivo. He visto problemas al utilizar:

Content-Disposition: attachment;filename=File Name.pdf vs Content-Disposition: attachment;filename="File Name.pdf"

Nota las comillas dobles alrededor del nombre de archivo. Esto importa cuando el nombre contiene espacios u otros caracteres inseguros.

2.) Contenido de tipo incorrecto. Como se menciona en los comentarios anteriores, esta es una indicación importante para el sistema sobre cómo debe tratarse el archivo. Para PDF, realmente debería usar application/pdf

3.) Diferentes codificaciones de transferencia. Es posible que este problema solo afecte el contenido gzip (desinflar). No sería la primera vez que IE no maneja adecuadamente las transmisiones comprimidas.

4.) Si está viendo resultados diferentes entre copias del mismo navegador, debe intentar establecer si también tienen la misma versión menor, así como os, complementos, barras de herramientas y lectores de PDF. Cualquiera de estas cosas podría ser un factor.

+4

Genial, pero ¿podría decirnos qué paso resolvió su problema, en beneficio de los demás? – SpliFF

+1

la solución fueron las comillas dobles alrededor del nombre del archivo – derekcohen

Cuestiones relacionadas