Foros del Web » Administración de Sistemas » Apache »

[SOLUCIONADO] htaccess, forzar descarga y renombrar archivo

Estas en el tema de htaccess, forzar descarga y renombrar archivo en el foro de Apache en Foros del Web. Hola gente muy buenas tardes... tengo el siguiente tema.. estoy haciendo una sección de descargas. generalmente esto lo hago con php. pero el tema es ...
  #1 (permalink)  
Antiguo 26/01/2015, 15:15
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 21
htaccess, forzar descarga y renombrar archivo

Hola gente muy buenas tardes...

tengo el siguiente tema.. estoy haciendo una sección de descargas. generalmente esto lo hago con php. pero el tema es que como son archivos grandes me tira un time out. entonces decidi intentar hacerlo con htaccess.

esta seccion de descargas almacena archivos (varios formatos) en un directorio. los archivos esta nombrados con algo asi 5cb7da26a3f9bb8ad47e232cb62ba6fb[CORTE]archivo.doc

5cb7da26a3f9bb8ad47e232cb62ba6fb: es un hash md5 de el time en el que fue subido, esto es para que si hay mas de un archivo con el mismo nombre no se pisen.

[CORTE] : lo uso para poder hacer un explode y recuperar el nombre

archivo.doc : el nombre real del archivo

para la descarga tome un script que es mas o menos asi

Código:
AddType application/octet-stream .pdf .jpg .png .gif
y anda perfecto.

pero... necesitaria hascer otra cosa..

1) en primer lugar necesito que en la descarga es decir cuando se abre el navegador de carpetas de windows el nombre del archivo sea solo (en este caso) archivo.doc

2) me gustaria modificar el codigo del htaccess para que en vez de decirle.. descargame archivos con determinada extension... poder decirle descargame todo


navegue bastante y no pude encontrar lo de el rename.. seguire buscando..

desde ya muchas gracias a quien pueda ayudarme..
  #2 (permalink)  
Antiguo 26/01/2015, 16:44
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 21
Respuesta: htaccess, forzar descarga y renombrar archivo

bueno.. voy avanzando..

Código:
RewriteEngine on
Rewriterule ^code=(.+)&file=(.+) $1[CORTE]$2
<FilesMatch ".pdf">
Header set Content-Type application/octet-stream
Header set Content-Disposition "attachment; filename={$1}"
</FilesMatch>
ahi vi lo de filesMatch.. y consegui de casualidad tratando de imitar el php.. y lo encontre... va en realidad casi.. lo unico que me falta es poder crear una variable con el nombre que yo quiera, extraido de la url, para poder colocarlo en la descarga..

y tambien seria bueno setearlo apra cualquier tipo de archivo..

desde ya muchas gracias a todos.
  #3 (permalink)  
Antiguo 27/01/2015, 10:06
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 21
Respuesta: htaccess, forzar descarga y renombrar archivo

bueno.. hasta que alguien que sepa responda.. sigo respondiendome solo ... jajajaja

creo haber avanzado un poco mas..


usando este link

files/descargas/8f089e4d9eb3f15ded4dff5200bf7eb7[CORTE]site-map-knauf.pdf?download

Código:
RewriteEngine On
RewriteCond %{QUERY_STRING} =download
RewriteRule ([^/]*)$ - [L,E=download:$1]
Header onsuccess set Content-disposition "attachment; filename=%{download}e" env=download
anda bien... ya se soluciona lo de no tenes que declarar cada extension.. y al parecer tambien modificaria el nombre.. ya que cambie

[L,E=download:$1] por [L,E=download:ppp.pdf]

y lo cambia

pero... no puedo descomponer el nombre para poder quitar el hash..

lo que hice fue algo como esto.. pero se ve que le estoy errando con la regex

Código:
RewriteEngine On
RewriteCond %{QUERY_STRING} =download
RewriteRule ^files/descargas/(.+)\[CORTE\](.+)?download$ - [L,E=download:$1]
Header onsuccess set Content-disposition "attachment; filename=%{download}e" env=download
ahi directamente no lo descarga solo lo abre.. sigo intentando..
  #4 (permalink)  
Antiguo 27/01/2015, 12:27
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 21
Respuesta: htaccess, forzar descarga y renombrar archivo

y seguimos tratando..

bueno despues de tanto toquetear creo que estoy mas cerca...

Código:
RewriteEngine On
RewriteRule ^(.+)\[CORTE\](.+) - [L,E=nombre:$2]
Header onsuccess set Content-Disposition: "attachment; filename=%{nombre}e" env=nombre
esto hace casi exactamente lo que necesito..

ya que ahora me gustaria poder cambiar el enlace visible..

y pasarlo de

files/descargas/45a64sd564as6d465as4[CORTE]mipdf.pdf

a

files/descargas/code=45a64sd564as6d465as4&file=mipdf.pdf

para lo cual entre otras miles de cosas intente esto..

Código:
RewriteEngine On
RewriteRule ^code=(.+)&file=(.+) $1[CORTE]$2 [L,E=nombre:$2]
Header onsuccess set Content-Disposition: "attachment; filename=%{nombre}e" env=nombre
y, si bien esta redireccionando correctamente por que el archivo lo abre.. no consigo que lo descargue...

asi que.. bueno.. sigo apelando.. a ForosDelWeb...

ayudaaaaaaaaaaaaaaa!!!! jajajajaja
  #5 (permalink)  
Antiguo 27/01/2015, 12:51
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 11 meses
Puntos: 21
Respuesta: htaccess, forzar descarga y renombrar archivo

bueno... esto fue una conversación conmigo mismo..

pude resolverlo.. y por si a alguien puede servirle.. dejo el código....

Código:
RewriteEngine On
#primero hacer la redireccion
RewriteRule ^code=(.+)&file=(.+)$ $1[CORTE]$2 
#establecer la condicion para reescribir con la url ya reescrita
RewriteCond %{REQUEST_URI} ^(.+)\[CORTE\](.+)$
#establecer las variables
RewriteRule ^(.+)\[CORTE\](.+)$ - [L,E=nombre:$2]
Header onsuccess set Content-Disposition: "attachment; filename=%{nombre}e" env=nombre
saludos..,.

Etiquetas: htaccess, navegador, php, renombrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:57.