¿Hay alguna manera de forzar un guardar como cuadro de diálogo para www.example.com/example.pdf en ff? (No puedo cambiar los encabezados)Cómo forzar guardar como cuadro de diálogo en Firefox además de cambiar los encabezados?
Respuesta
La única otra forma en que puedo pensar es modificar la configuración de Firefox. Supongo que no puedes hacer esto.
EDIT:
I remendado una solución del lado del cliente basado en la idea de URI de datos. Utiliza una versión modificada de de base64 encoder y una técnica para binary XMLHTTPrequests La secuencia de comandos descarga el archivo PDF, luego genera y coloca un enlace URI de datos dinámicamente utilizando el codificador base64.
Debería ser útil cuando desee codificación de secuencia de octetos pero no tenga acceso al servidor (como parece ser el caso para el OP).
Nota, acabo de publicar an example usando hunts.pdf, con el que estaba probando el OP.
/**
*
* Base64 encode/decode
* http://www.webtoolkit.info/
*
**/
var Base64 = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=",
// public method for encoding
encode : function (input) {
var output = "";
var chr1, chr2, chr2raw, chr3, chr3raw, enc1, enc2, enc3, enc4;
var i = 0;
//input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++) & 0xFF;
chr2 = isNaN(chr2raw = input.charCodeAt(i++)) ? NaN : (chr2raw & 0xFF);
chr3 = isNaN(chr3raw = input.charCodeAt(i++)) ? NaN : (chr3raw & 0xFF);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
}
}
// http://web.archive.org/web/20071103070418/mgran.blogspot.com/2006/08/downloading-binary-streams-with.html
//fetches BINARY FILES synchronously using XMLHttpRequest
load_url = function(url) {
var req = new XMLHttpRequest();
req.open('GET',url,false);
//XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
req.overrideMimeType('text/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200){
alert(req.status);
return '';
}
return req.responseText;
}
function getDataURI(filename)
{
var file = load_url(filename);
var uueFile = Base64.encode(file);
var uri = 'data:application/octet-stream;base64,' + encodeURIComponent(uueFile);
return uri;
}
window.addEventListener("load",
function()
{
var link = getDataURI("foo.pdf");
document.getElementById("myDiv").innerHTML += '<a href="' + link + '"><code>' + link + '</code></a><br><br>';
}
Si se puede emitir el archivo al cliente en la base 64, se puede usar URIs de datos para la descarga.
location.href = 'data:application/octet-stream;base64,' + appendPDFContentHere
OR
<a href="data:application/octet-stream;base64,appendPDFContentHere">pdf</a>
Esto sólo funcionará en los navegadores IE no obstante, pero como usted pidió para Firefox, esto debería funcionar muy bien.
EDIT:
Los dos ejemplos a continuación contienen los bytes para hacer un PNG. Si hace clic en el primero, puede ver la imagen como lo haría normalmente en un navegador. sin embargo, si haces clic en el segundo enlace, te obligará a descargar la imagen. Guárdelo como .png y verá que son exactamente las mismas imágenes. La única diferencia entre los dos enlaces es el tipo mime
view image (preview shortened url) - tipo MIME: image/jpeg
download image (preview shortened url) - tipo MIME: application/octet-stream
Usted preguntó qué puso en lugar de appendPDFContentHere y la respuesta son los bytes codificados en base64 que componen el PDF. Lo usé en línea base64 encoder para codificar la imagen utilizada en el ejemplo.
¿qué debo poner en "anexar contenido PDF aquí"? todo el PDF? –
o solo la URL del pdf? –
No, si usted acaba de hacer la URL no se puede agregar el tipo MIME (application/octet-stream). –
- 1. Abrir el cuadro de diálogo "guardar como ..." desde: ex comando
- 2. ¿Cómo forzar a Chrome a mostrar un cuadro de diálogo Guardar como cuando hago clic en un enlace de descarga?
- 3. Deshabilitar Firefox guardar como dialog-selenium
- 4. Guardar el cuadro de diálogo de archivo en MVC
- 5. ¿Cómo se muestra un cuadro de diálogo Guardar como en WPF?
- 6. cómo usar el diálogo Guardar como de Python
- 7. Cómo mostrar el cuadro de diálogo 'Guardar como' usando PHP para archivos de texto
- 8. Cómo establecer el nombre de archivo de respuesta sin forzar el diálogo guardar
- 9. Aplicar un estilo a todos los cuadros de diálogo (cuadro de diálogo spinner, cuadro de diálogo de alerta, etc.)
- 10. Cómo cambiar los caracteres escritos en Firefox
- 11. Cambiar la fuente en el cuadro de diálogo CHOOSECOLOR
- 12. Cambiar/Agregar controles a las ventanas Abrir/Guardar cuadro de diálogo común
- 13. Android - Cambiar fondo de título de cuadro de diálogo personalizado
- 14. ¿Cómo crear controles como los cuadros de diálogo en Ember?
- 15. ¿Cómo cambiar el texto del botón para los botones "Sí" y "No" en el cuadro de diálogo Cuadro de mensaje.Mostrar?
- 16. Selenium WebDriver y los navegadores seleccionan el cuadro de diálogo
- 17. Clonar los botones de diálogo jqueryui en la parte superior del cuadro de diálogo
- 18. cambiar la altura del cuadro de diálogo personalizado en el Fragmento de diálogo
- 19. Modificar encabezados de respuesta HTTP en Firefox
- 20. Cambiar cuadro de diálogo personalizado 'encabezado' al 'encabezado' AlertDialog
- 21. Alinear como botón cuadro de diálogo de comentario
- 22. cuadro de diálogo jQuery
- 23. ¿Cómo reemplazar el cuadro de diálogo de búsqueda de Eclipse?
- 24. Tipo de entrada WPF/cuadro de diálogo?
- 25. guardar los valores de cuadro de texto en el Registro
- 26. ¿Cómo puedo forzar a PropertyGrid a mostrar un cuadro de diálogo personalizado para una propiedad específica?
- 27. Personalizar el cuadro de diálogo onbeforeunload
- 28. Obligando a guardar como diálogo desde cualquier navegador web desde la aplicación JSF
- 29. ¿Cómo cambiar el tamaño del botón en el cuadro de diálogo de confirmación de Jquery Ui?
- 30. Excel VBA: Guardar como activa el evento Cambiar en ComboBox
no :(parece que esto debería ser posible ... –
@raj: Para eso son exactamente los encabezados. El cuerpo de respuesta es el contenido, los encabezados son una sugerencia de qué hacer con él (p. Ej., Contenido . -Disposition) – Piskvor
gracias por la solución I trataron utilizando el código Aquí está la parte inferior del código utilicé:. window.addEventListener ("carga", función() { var link = getDataURI ("http : //www.google.com/ads/hunts.pdf "); document.getElementById (" myDiv ").innerHTML + = '
' + link + '
'; }