Hola,
Quizás sea algo muy tonto, pero no consigo sacarlo de ninguna forma.
Desde un formulario envio un archivo, y el controlador, antes de hacer
nada, compruebo el tipo del archivo,ya que necesito que sea excel.
Cuando hago:
params[“upload”][:datafile].content_type == “application/vnd.ms-excel”
Me devuelve false, aunque el fichero que este enviando realmente sea un
archivo excel. Asà mismo, si hago debug, me encuentro que
params["uplo… tiene el valor “application/vnd.ms-excel”, por lo que no
entiendo porque no devuelve true.
He de usar otro operador? Alguien se ha encontrado con algo parecido?
Muchas gracias,
Hola Antonio,
Antonio R. escribió:
params[“upload”][:datafile].content_type == “application/vnd.ms-excel”
A qué clase pertenece ese content_type? si no es un string yo probarÃa a
convertirlo antes de hacer la comparación:
params[…].content_type.to_s == “application/vnd.ms-excel”
–
Raul M. - Freelance Web D.
http://raul.murciano.net
Hola Raul,
Pensaba en eso, pero content_type es de la clase String, asi que no debe
de ser esto.
Merci
El mié, 21-11-2007 a las 19:41 +0100, Raul M. escribió:
Has hecho un logger.debug del content-type?
Yo he tenido que discernir documentos por la extension del archivo
subido porque ponian el content-type generico.
Echale un ojo 
El 21/11/07, Antonio R. [email protected] escribió:
Antonio R. escribió:
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
–
Ernesto Jiménez Caballero
Software Engineer Leader
Negonation
(34) 620 475 382
[email protected]
Al hacer el logger.debug del content-type me saca lo mismo:
application/vnd.ms-excel
Asi que por ahora me tendŕe que apañar con la solución de Damian y no
seré tan estricto.
Muchas gracias a todos 
El mié, 21-11-2007 a las 22:15 +0200, Ernesto Jiménez Caballero
escribió:
On Nov 21, 2007 3:47 PM, Antonio R. [email protected] wrote:
Hola Raul,
Pensaba en eso, pero content_type es de la clase String, asi que no debe
de ser esto.
Quizás hay algún \n dando vueltas…
De todos modos, quizás mejor una comparación más flexible:
content_type =~ /ms-excel/
¿y si muestras la longitud de ambas cadenas? por que igual te está
saliendo el salto de linea que te han comentado y no se está viendo(o
igual tienen distinta codificación y por lo tanto tendrán una longitud
diferente…)
saludos
Antonio R. escribió:
escribió:
Antonio R. escribió:
params[“upload”][:datafile].content_type == “application/vnd.ms-excel”
A qué clase pertenece ese content_type? si no es un string yo probarÃa a
convertirlo antes de hacer la comparación:
params[…].content_type.to_s == “application/vnd.ms-excel”
–
/**
Prueba con …
content_type.include? “ms-excel”
Un saludo,
Francesc
On Nov 21, 2007, at 10:06 PM, Antonio R. wrote:
El mié, 21-11-2007 a las 22:15 +0200, Ernesto Jiménez Caballero
Hola Raul,
Antonio R. escribió:
http://lists.simplelogica.net/mailman/listinfo/ror-es
–
name. Francesc E. i MartÃ
voice. +34 678.681.603
Antonio R. escribió:
Al hacer el logger.debug del content-type me saca lo mismo:
application/vnd.ms-excel
Asi que por ahora me tendŕe que apañar con la solución de Damian y no
seré tan estricto.
Jajajaja, nos tienes a todos intrigados con este tema! xD
–
Raul M. - Freelance Web D.
http://raul.murciano.net
Al final si que habia un salto de linea perdido, lo he podido sacar con
los consejos que me dabais, mostrando la longitud de las cadenas y
poniendo el logger.debug entre comillas. Ahora, le he quitado este salto
de linea haciendo simplemente cadena.scan(/(\S)/) no se si será correcta
esta expresión, y ahora tengo las dos cadenas con 24 caracteres, pero
aun asi, al hacer la comparacion,sigue dandome false.
Resumimos, tengo esto:
prueba = params[“upload”][:datafile].content_type.scan(/(\S)/) ==
“application/vnd.ms-excel”
logger.debug("’#{prueba}’")
logger.debug("’#{params[“upload”][:datafile].content_type.scan(/(\S)/)}’")
y me devuelve:
‘false’
‘application/vnd.ms-excel’
El mié, 21-11-2007 a las 23:35 +0100, Borja MartÃn escribió:
On Nov 21, 2007, at 10:06 PM, Antonio R. wrote:
Al hacer el logger.debug del content-type me saca lo mismo:
application/vnd.ms-excel
Has probado a poner comillas alrededor?
logger.debug("’#{…}’")
a veces ayuda a ver algo raro que se escapa.
– fxn
prueba con params[“upload”][:datafile].content_type.trim ==
“application/vnd.ms-excel”
saludos
Antonio R. escribió:
“application/vnd.ms-excel”
El mié, 21-11-2007 a las 23:35 +0100, Borja MartÃn escribió:
escribió:
El 21/11/07, Antonio R. [email protected] escribió:
convertirlo antes de hacer la comparación:
http://lists.simplelogica.net/mailman/listinfo/ror-es
–
/**
No me ha funcionado con trim, pero a partir de ahà he podido encontrar
chomp, y con este método si funciona.
Muchas gracias a todos, y la verdad es que de una pequeña tonteria
parece que he aprendido bastante, jejeje.
Saludos 
El jue, 22-11-2007 a las 00:41 +0100, Borja MartÃn escribió:
On Nov 21, 2007 7:53 PM, Antonio R. [email protected] wrote:
No me ha funcionado con trim, pero a partir de ahí he podido encontrar
chomp, y con este método si funciona.
Muchas gracias a todos, y la verdad es que de una pequeña tonteria
parece que he aprendido bastante, jejeje.
El “trim” es String#strip.
Igual creo que es mejor comparar con la expresión regular o con el
#include? como te dice Francesc…
Porque es mejor comparar con la expresión regular que usar strip?
El mié, 21-11-2007 a las 20:01 -0300, Damian J. escribió:
On Nov 21, 2007 8:13 PM, Antonio R. [email protected] wrote:
Porque es mejor comparar con la expresión regular que usar strip?
Sobre todo porque estás trabajando sobre el String y devolviendo una
nueva instancia, sólo para compararla. En ese sentido, usa la
expresión regular o el include? es mucho más semántico y expresa lo
que realmente querés hacer: ver si un String incluye a otro.
On Nov 21, 2007, at 11:27 PM, Raul M. wrote:
Antonio R. escribió:
Al hacer el logger.debug del content-type me saca lo mismo:
application/vnd.ms-excel
Asi que por ahora me tendŕe que apañar con la solución de Damian
y no
seré tan estricto.
Jajajaja, nos tienes a todos intrigados con este tema! xD
Fijate que yo tengo el avion antes de la 8 y mira por donde ando 
Es interesante, si lo ha resuelto con un chomp es que habia un salto
de linea en el content-type! Eso es muy raro la verdad, me gustaria
entender de donde viene. Lo acarreara de la cabecera HTTP? Seria un
bug en ese caso, estara mal enviado? … Hmrghrf…
– fxn
Bueno,
Seguimos con la intriga, engancho las cabeceras, que es lo que hay
debajo del content-type???
Saludos,
Content-Type: multipart/form-data;
boundary=---------------------------1397191609311848634219873264
Content-Length: 97126
-----------------------------1397191609311848634219873264
Content-Disposition: form-data; name=“upload[datafile]”;
filename=“prueba.xls”
Content-Type: application/vnd.ms-excel
ÃÃà ¡±á
El jue, 22-11-2007 a las 09:17 +0100, Pablo Formoso E. escribió: