Je vais prendre le temps de répondre plus finement à tout ce soir, mais
rapidement, j'ai appliqué ce style de méthode :
http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

Mon code ressemble très fortement à celui-ci :

  def download
    head(:not_found) and return if (track = Track.find_by_id(params[:id])).nil?
    head(:forbidden) and return unless track.downloadable?(current_user)

    path = track.mp3.path(params[:style])
    head(:bad_request) and return unless File.exist?(path) &&
params[:format].to_s == File.extname(path).gsub(/^\.+/, '')

    send_file_options = { :type => File.mime_type?(path) }

    case SEND_FILE_METHOD
      when :apache then send_file_options[:x_sendfile] = true
      when :nginx then head(:x_accel_redirect => path.gsub(Rails.root,
''), :content_type => send_file_options[:type]) and return
    end

    send_file(path, send_file_options)
  end


J'ai également essayé une modification : utiliser "attachment.content_type"
au lieu de "File.mime_type" pour préciser le type. Ca ne marche pas mieux,
or dans ma base, content_type a une valeur correcte : video/ogg. J'ai même
essayé en forçant cette valeur avec "video/ogg" et "audio/ogg", sans
meilleur résultat...

Après, en écrivant ceci, je me demande si je ne suis pas victime des
différents cache, c'est à dire qu'une modification du controleur pour gérer
ce type MIME ne serait pas forcément être vue par mon browser qui a caché
ces informations ?

gUI

Le 5 mars 2012 11:09, Thibault Jouan <[email protected]> a écrit :

> Bonjour,
>
> On 2012-03-05 08:50:46 +0100, Guillaume Betous wrote:
> > Je fais une appli où, pour simplifier, on peut déposer des fichiers de
> > musique, puis ensuite les écouter via jPlayer (mode audio playlist).
> > Je précise (c'est important je crois), que la redescente du fichier joint
> > est faite via le controlleur.
>
>   Il faudrait le code du contrôleur concerné.
>
>
> > Le problème :
> > ça ne marche pas sous Firefox, alors que sous Chromium par exemple ça
> > marche (en HTML5 je précise). je vois bien ma liste de fichiers
> disponibles
> > dans le player, mais si je clique,rien ne se passe, la lecture ne démarre
> > pas.
>
>   Ce n'est pas clair, il faudrait un exemple de contenu HTML dans ce
> cas (en particulier le bout d'<audio></audio> concerné, et surtout la
> valeur de l'attribut src="").
>
>
> > Début d'analyse :
> > je soupçonne fortement une histoire de MimeType. En effet, si je regarde
> ma
> > base de données, j'ai bien le champ "content_type" qui est rempli (par
> > exemple video/ogg pour un fichier ogg), et qui est censé être passé lors
> du
>
>   Il faudrait commencer par vérifier ce point. Vérifier la réponse
> HTTP complète (en particulier l'en-tête Content-Type:) avec les outils
> de debug firefox, firebug, un proxy ou tcpdump.
>
> > téléchargement (je fournit l'option mime type lors du téléchargement).
>
>   C'est à dire ?
>
>
> > Or si je copie/colle l'adresse du fichier (celle qui est utilisé par
> > jPlayer) dans Firefox, j'obtiens bien un fichier, mais qui est noté
> "BIN",
> > et pas video/ogg.
>
>   Il nous faudrait indiquer les en-têtes complets de la réponse HTTP.
>
>
> > Alors je suis un peu perdu dans les types MIME, par exemple je ne sais
> pas
> > trop qui régle ça : est-ce l'OS du serveur ? l'OS du client ? l'appli
> > serveur (mon appli Rails quoi) ? l'appli cliente (le browser) ? un peu
> tout
> > le monde en fonction de quelles priorités ?
>
>   Dans ce cas de figure l'OS n'intervient pas.
>
>  L'en-tête Content-Type: doit avoir la valeur adéquate pour chaque
> réponse. À charge pour ton application ou ton serveur de positionner
> cette valeur comme il se doit.
>
>  Tu ne nous dit pas comment ton application rails sert le fichier, si
> c'est elle qui alimente le corps de la réponse ou si cela est délégué
> au front HTTP (à la X-Sendfile: par exemple).
>
>
>  Bref il faudrait savoir comment tu as implémenté ça car il y a pas
> mal de manière de le faire. En voici une parmi d'autres :
>
> class SoundsController < ApplicationController
>  def show
>    sound = Sound.find params[:id]
>    send_file sound.path, :type => sound.mime_type
>  end
> end
>
> --
> Thibault Jouan
> http://a13.fr/
> +33 6 28 25 39 00 (UTC+1)
>



-- 
Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://www.libreoffice.org/download/

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Répondre à