Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Cergath en 16 Abril 2015, 19:12 PM

Título: ¿Qué significa este error?
Publicado por: Cergath en 16 Abril 2015, 19:12 PM
Estoy recibiendo un error más largo que este, pero dudo que lo demás sea primordial justo ahora:

unknown mime type unknown/unknown

¿Cómo lo soluciono si no sé qué formato he de solucionar?
Es un fichero .imscc para importar en Canvas (instructure)
Título: Re: ¿Qué significa este error?
Publicado por: engel lex en 16 Abril 2015, 19:29 PM
no se que lenguaje estás usando ni que estás haciendo mal... pero aquí información sobre los mimetypes

http://es.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions (http://es.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions)
Título: Re: ¿Qué significa este error?
Publicado por: Eleкtro en 16 Abril 2015, 20:16 PM
Deberia(mos) eliminar todas las preguntas que no indiquen el lenguaje de programación que se está usando.

Esto me mosquea aun más cuando son usuarios veteranos.

Saludos
Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 03:38 AM
Cita de: Eleкtro en 16 Abril 2015, 20:16 PM
Esto me mosquea aun más cuando son usuarios veteranos.

No soy usuario veterano, y ciertamente no dije el lenguaje de programación porque no creí que fuese importante dado el error tan genérico y el hecho de que no hay output más que ese... Como mencioné en el post original, trato de importar un paquete de cursos a Canvas (de Instructure), que está hecho en Ruby, desafortunadamente el output no muestra más, sino solo ese error... Muestra algunas líneas relacionadas a ficheros que fallan, pero nada más, como que intentó correr "/var/canvas/lib/canvas/migration/archive.rb ..." etcétera

Será que mirando lo que hacen esos archivos de pronto doy con lo que trata de hacer?
Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 03:52 AM
Fui a otros ficheros de errores y encontré el código que intenta ejecutar:

Código (ruby) [Seleccionar]
each_entry(archive_filename) do |entry, index|
     if unsafe_entry?(entry)
       add_warning(warnings, entry, :unsafe)
       next
     end

     if block
       block.call(entry, index)
     else
       raise FileLimitExceeded if files_left <= 0
       begin
         f_path = File.join(dest_folder, entry.name)
         entry.extract(f_path, false, bytes_left) do |size|
           bytes_left -= size
           raise SizeLimitExceeded if bytes_left < 0
         end

         files_left -= 1
       rescue DestinationFileExists
         add_warning(warnings, entry, :already_exists)
       rescue Zip::CompressionMethodError
         add_warning(warnings, entry, :unknown_compression_method)
       end
     end
   end
   warnings
 end

 def self.each_entry(archive_filename)
   raise ArgumentError, "no block given" unless block_given?

   file = File.open(archive_filename)
   mime_type = File.mime_type?(file)

   if mime_type == 'application/x-gzip'
     file = Zlib::GzipReader.new(file)
     mime_type = 'application/x-tar' # it may not actually be a tar though, so rescue if there's a problem
   end

   if mime_type == 'application/zip'
     Zip::File.open(file) do |zipfile|
       zipfile.entries.each_with_index do |zip_entry, index|
         yield(Entry.new(zip_entry), index)
       end
     end
   elsif mime_type == 'application/x-tar'
     index = 0
     begin
       Gem::Package::TarReader.new(file).each do |tar_entry|
         next if tar_entry.header.typeflag == 'x'
         yield(Entry.new(tar_entry), index)
         index += 1
       end
     rescue Gem::Package::TarInvalidError
       raise UnknownArchiveType, "invalid tar"
     end
   else
     raise UnknownArchiveType, "unknown mime type #{mime_type}"
   end
 end


Ya intenté cambiar el formato de .imscc a .zip (que es que .imscc por defecto debería funcionar), y aún así no funciona :( ... ¿alguna forma de configurar "manualmente" el mime type?... ¿se puede? :(  :-( :-(

(está funcionando en Ubuntu 12.04)
Título: Re: ¿Qué significa este error?
Publicado por: engel lex en 17 Abril 2015, 04:18 AM
el mimetype viene dado por el servidor que normalmente toma en cuenta la extención del fichero para escogerlo... puedes hacerle un bypass al programa y listo, ahí tienes el codigo, ahora tienes que saber que hacer con el... si es necesario que sea así necesitarías explicar el servidor
Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 08:24 AM
Sé que no es la solución más sofisticada porque, bueno, supongo que lo ideal sería que identificara el archivo...

Código (ruby) [Seleccionar]
if mime_type == 'unknown/unknown'
     Zip::File.open(file) do |zipfile|
       zipfile.entries.each_with_index do |zip_entry, index|
         yield(Entry.new(zip_entry), index)
       end
     end


He puesto eso y me ha funcionado  :o , la verdad me sorprende que haya sido tan... fácil...