Riconoscimento del mime-type corretto in Safari
Posted by Dibi Store Fri, 07 Dec 2007 08:25:00 GMT
Ieri, io e dei colleghi, mentre lavoravamo per zooppa, ci siamo imbattuti in un problema insolito, ossia utilizzando il browser safari, non riuscivamo ad effettuare l'upload di files in formato flv. In pratica l'applicazione in rails ci dava come parametro nella richiesta post direttamente una parte del binario (so che non è il binario, ma per capirci :D ), anzichè il nome del file (come nel resto degli altri browser usati).
In pratica, io e Alberto (un collega), abbiamo provato ad analizzare il traffico di rete, e le risposte che venivano fornite eseguendo l'upload,e ci siamo accorti che proprio nel browser safari non veniva riconosciuto correttamente il mime-type, e al contrario degli altri browser che solitamente in questo caso restituiscono una risposta application/octet-stream, safari non restituisce nulla (sarebbe una cosa da aggiungere in un prossimo futuro al browser della mela). Smanettando quà e la, Alberto ha trovato un pezzetto di codice nella classe Cgi e nel modulo QueryExtension di Ruby che definisce cosa fare quando non viene restituito un mime-type dal browser. Di seguito il pezzetto di codice originale:
content_type = ($1 or "")
In pratica li viene detto semplicemente che se non viene specificato il content-type dal browser (è attraverso il browser che effettuiamo la richiesta), ci mettiamo al suo posto una stringa vuota! Questo però in qualche modo a rails o a file_column non piace, e quindi noi abbiamo sostituito quella stringa con il mime-type desiderato ( application/octet-stream ). Ovviamente se anche voi vi state trovando in una soluzione simile, avrete sicuramente pensato che non è necessario andare a modificare direttamente il sorgente della classe originale, vi basterà semplicemente ridefinire il metodo dove volete, noi ad esempio abbiamo creato un file apposito posizionato all'interno della directory '/config', e lo abbiamo poi richiamato con require dal file environment.rb. E' inutile che posti direttamente il file modificato in quanto cambia solo quella riga, potete comunque contattarmi per problemi simili. I crediti per la soluzione vanno per la maggior parte ad Alberto e a wireshark (programmino per il traffico di rete).

