1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
---
title: Content-Disposition
slug: Web/HTTP/Headers/Content-Disposition
translation_of: Web/HTTP/Headers/Content-Disposition
---
<div>{{HTTPSidebar}}</div>
<div>En una respuesta HTTP regular, el encabezado <code><strong>Content-Disposition</strong></code> indica si el contenido se espera que se muestre en línea en el navegador, esto es, como una o como parte de una página web, o como un archivo adjunto, que se puede descargar y guardar localmente.</div>
<div> </div>
<div>En un cuerpo <code>multipart/form-data</code>, el encabezado general <strong><code>Content-Disposition</code> </strong>puede ser utilizado en la subparte de un cuerpo multipartes para dar información acerca del campo al que aplica. La subparte es delimitada por el <em>boundary</em> (límite) definido en el encabezado {{HTTPHeader("Content-Type")}}. Cuando se utiliza en el propio cuerpo, <code>Content-Disposition</code> no tiene efecto.</div>
<div> </div>
<div>El encabezado <code>Content-Disposition </code>está definido en el contexto de mensajes MIME para correos electrónicos, pero sólo un subconjuto de los parámetros posibles aplican a formularios HTTP y peticiones {{HTTPMethod("POST")}}. Sólo el valor <code>form-data</code>, como las directivas opcionales <code>name</code> and <code>filename</code>, pueden ser utilizadas en el contexto HTTP.</div>
<p> </p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Tipo de encabezado</th>
<td>{{Glossary("Response header")}} (para el cuerpo principal)<br>
{{Glossary("General header")}} (para una subparte de un cuerpo multipartes)</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>no</td>
</tr>
</tbody>
</table>
<p> </p>
<h2 id="Sintaxis">Sintaxis</h2>
<h3 id="Como_encabezado_de_respuesta_para_cuerpo_principal">Como encabezado de respuesta para cuerpo principal</h3>
<p>El primer parámetro en el contexto HTTP o es <code>inline</code> (valor predeterminado, indicando que puede ser mostrado dentro de una página web, o como la página web) o <code>attachment</code> (indicando que será descargado; la mayoría de los navegadores mostrando un diálogo 'Guardar como', prellenado con el valor del parámetro <code>filename</code>, en caso de estar presente).</p>
<pre class="syntaxbox">Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"</pre>
<h3 id="Como_encabezado_para_un_cuerpo_multipartes">Como encabezado para un cuerpo multipartes</h3>
<p>El primer parámetro en el contexto HTTP siempre es <code>form-data</code>; parámetros adicionales son insensibles a mayúsculas y tienen argumentos que usan sintaxis de textos entre comillas después del signo de <code>'='</code>. Múltiples parámetros se separan por punto y coma (<code>';'</code>).</p>
<pre class="syntaxbox">Content-Disposition: form-data
Content-Disposition: form-data; name="fieldName"
Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"</pre>
<h3 id="Directivas">Directivas</h3>
<dl>
<dt><code>name</code></dt>
<dd>Es seguida de un texto que contiene el nombre del campo de HTML en el formulario a la que el contenido de la subparte refiere. Cuando se usan múltiples archivos en el mismo campo (por ejemplo, el atributo {{htmlattrxref("multiple", "input")}} de un elemento <code>{{HTMLElement("input","<input type=file>")}}</code>), puede haber varias subpartes con el mismo nombre.<br>
Un <code>name</code> con valor de <code>'_charset_'</code> indica que la parte no es un campo HTML, sino el conjunto de caracteres predeterminado para partes sin información explícita sobre su conjunto de caracteres.</dd>
<dt><code>filename</code></dt>
<dd>
<p>Es seguida de un texto que contiene el nombre original del archivo transmitido. Siempre es opcional y no debe ser utilizado a ciegas por la aplicación: información sobre la ruta debe ser despojada, y se debe realizar una conversión a las reglas del sistema de archivos del servidor. Este parámetro provee mayormente información indicativa. Cuando se usa en combinación con <code>Content-Disposition: attachment</code>, es utilizado como el nombre de archivo predeterminado en caso de que se presente al usuario un diálogo de 'Guardar como'.</p>
</dd>
<dt><code>filename*</code></dt>
<dd>
<p>Los parámetros <code>filename</code> y <code>filename*</code> difieren únicamente en que <code>filename*</code> utiliza encodeado definido en <a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a>. Cuando ambos están presentes en un valor de campo de encabezado simple, <code>filename*</code> es preferido sobre <code>filename</code> cuando ambos están presentes y entendidos.</p>
</dd>
</dl>
<h2 id="Ejemplos">Ejemplos</h2>
<p>Una respuesta generando el diálogo 'Guardar como':</p>
<pre>200 OK
Content-Type: text/html; charset=utf-8
Content-Disposition: attachment; filename="genial.html"
Content-Length: 22
<HTML>Guárdame!</HTML>
</pre>
<p>Este archivo simple de HTML será guardado como una descarga regular en lugar de mostrarse en el navegador. La mayoría de los navegadores propondrá guardarlo como <code>genial.html</code> ya que es el nombre (predeterminado).</p>
<p>Un ejemplo de un formulario HTML, publicado usando el formato <code>multipart/form-data</code> que hace uso del encabezado <code>Content-Disposition</code>:</p>
<pre>POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="campo1"
valor1
--boundary
Content-Disposition: form-data; name="campo2"; filename="ejemplo.txt"
valor2
--boundary--</pre>
<h2 id="Especificaciones">Especificaciones</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Título</th>
</tr>
<tr>
<td>{{RFC("7578")}}</td>
<td>Returning Values from Forms: multipart/form-data (Retornando Valores desde Formularios: multipart/form-data)</td>
</tr>
<tr>
<td>{{RFC("6266")}}</td>
<td>Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) (Uso del campo de encabezado Content-Disposition en HTML)</td>
</tr>
<tr>
<td>{{RFC("2183")}}</td>
<td>Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field (Comunicando Información de Presentación en Mensajes de Internet: el Campo de Encabezado Content-Disposition)</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2>
<p class="hidden">La tabla de compatibilidad en esta página es generada a partir de datos estructurados. Si te gustaría contribuir, por favor revisa <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíanos un pull request.</p>
<p>{{Compat("http.headers.Content-Disposition")}}</p>
<h2 id="Notas_de_compatibilidad">Notas de compatibilidad</h2>
<ul>
<li>
<p>Firefox 5 maneja el encabezado de respuesta HTTP <code>Content-Disposition</code> más efectivamente si ambos parámetros <code>filename</code> y <code>filename*</code> están presentes; observa todos los nombres presentes, usando el parámetro <code>filename*</code> si uno está disponible, incluso si el parámetro <code>filename</code> está incluido antes. Previamente, el primer parámetro en encontrarse sería usado, de este modo se previene el uso de un nombre más apropiado. Mira {{bug(588781)}}.</p>
</li>
</ul>
<h2 id="Ver_también">Ver también</h2>
<ul>
<li><a href="/en-US/docs/Web/Guide/HTML/Forms">Formularios HTML</a></li>
<li>El {{HTTPHeader("Content-Type")}} definiendo el límite de un cuerpo multipartes.</li>
<li>La interfaz {{domxref("FormData")}} usada para manipular datos de formulario para uso en la API {{domxref("XMLHttpRequest")}}.</li>
</ul>
|