Estoy usando el método de publicación de formularios para publicar algunos archivos en uno de mis contenedores en rackspace. El problema es que si subo un pdf primero y luego un png de una sola vez, está intentando abrir png en el visor de pdf. Al verificar, me di cuenta de que el "Tipo de contenido" estaba configurado en "aplicación/pdf" para png.
mi forma es algo asi
<form id="form" accept-charset="utf-8" action="action" method="POST" enctype="multipart/form-data" novalidate="novalidate"> <input type="hidden" name="redirect" value="rediredt url"> <input type="hidden" value="" name="max_file_size"> <input type="hidden" value="" name="max_file_count"> <input type="hidden" value="" name="expires" id="rack_expire"> <input type="hidden" value="" name="signature" id="rack_signature"> <div class="contentRow fileUploadWrap"> <p><input id="file2" type="file" name="file_1"></p> <p><input id="file2" type="file" name="file_2"></p> <p><input id="file3" type="file" name="file_3"></p> <p><input id="file4" type="file" name="file_4"></p> <p><input id="file5" type="file" name="file_5"></p> <div class="contentRow"> <div class="submit"><input id="uploadFilesBtn" class="btn btn--primary" type="submit" value="Upload"></div> </div> </div> </form>No puedo encontrar una manera de establecer el tipo de contenido para los archivos que se cargan. ¿Hay alguna manera de que pueda arreglar esto?
Use append en lugar de input y especifique el nombre de archivo de esta manera
formData.append('userfile[]', myFileInput.files[0], 'doc1.pdf'); formData.append('userfile[]', myFileInput.files[1], 'image1.png');El navegador identificará el tipo de archivo (tipo de contenido) y abrirá el archivo en consecuencia, los resultados pueden ser diferentes de un navegador a otro, pero puede confiar en él para formatos de archivo comunes.
Como se especifica en la documentación de FormData
Si especifica un Blob como los datos para agregar al objeto FormData, el nombre de archivo que se informará al servidor en el encabezado "Content-Disposition" solía variar de un navegador a otro.
La única solución que encontré para esto es actualizar el tipo de contenido de los archivos cargados usando los métodos API mencionados aquí .
Ya estaba guardando los nombres de los archivos, así que hice una publicación CURL para actualizar la información y eso solucionó el problema.