Sunday 8 October 2017

Php Mime Type Binario Options


Un tipo MIME per i file. php Durante l'impostazione di alcune proprietà SVN sul posto di lavoro, ci siamo chiesti circa il tipo MIME corretto per i file. php. Guardando in giro in varie liste di rilevamento di tipo MIME magici sulle nostre macchine UNIX e la lista ufficiale di tipo IANA MIME. le opzioni che si avvicinò con erano: tipo MIME rulesx200B Poiché non vi è nessun tipo MIME ufficiale registrato presso IANA, solo un tipo di estensione (X prefisso) può essere utilizzato - il che significa che textphp e applicationphp non sono adatti: qualsiasi tipo di file non registrato dovrebbe essere elencati mediante un X - precedente. come in applicationx-foo (RFC2045 5.1), o di una x. . come in applicationx. foo (RFC4288 4.3). Qualsiasi tipo non x-prefisso deve essere registrato con IANA ed elencati all'indirizzo di cui sopra. Ogni altro comportamento è una violazione Linux distributionsx200B Ubuntus database di magia MIME standard MIME - utilizzata dal comando file - sputa fuori textx-php. Debians pacchetto mime-supporto, fornito anche da Ubuntu, elenca applicationx-httpd-php per. php e applicationx-httpd-php-source per i file. phps in etcmime. types. Questi due tipi sono - ai miei occhi - più per l'uso Apachewebserver interno, dal momento che PHP non è utilizzabile solo all'interno di un demone http. IANA considerationsx200B ciò che resta sono textx-php e applicationx-php. Io personalmente preferisco di testo per i file di testo normale leggibili dall'utente, che è il motivo per cui ero scettico riguardo applicationx-php in un primo momento. Poi ho visto che nel 2006, IANA assegnato ufficialmente applicationjavascript per file di codice JavaScript - e non textjavascript. Gli stati RFC: l'uso di tipo top-level di testo per questo tipo di contenuti è noto per essere problematico. - Ma non riesce a stabilire il motivo per cui è così. Credo che questo sia perché i problemi di sicurezza nascono dal browser cercano di visualizzare ogni testo tipo MIME in formato HTML. Un ragionamento analogo è stato utilizzato quando si applica per il tipo MIME JSON che è stato ufficialmente assegnato nella RFC 4627. Alla domanda sul perché non textjson, Crockford sembra avere detto JSON non è davvero JavaScript né testo e anche IANA era più probabile per distribuire applicazioni di testo . Altro languagesx200B Guardando i tipi di testo ufficialmente assegnati chiarisce che non c'è un unico linguaggio di programmazione tipo di file di origine nel club. (HTML è, come dice il nome, un margine di profitto e non un linguaggio di programmazione - che è il motivo per cui texthtml non conta.) L'elenco dei tipi di applicazione, dall'altro contiene tipi come applicationecmascript e applicationjavascript. entrambi linguaggi di programmazione. Inoltre, anche Debian mette diversi linguaggi di programmazione nel gruppo di applicazioni: applicationx-rubino. applicationx-sh e applicationx-TCL. Downsidesx200B Utilizzando applicationx-php come tipo MIME per i file. php non è senza dolore. Un tipo inizia con testo indica che il contenuto del file sono leggibili. Posso aprirlo e ottenere una presa di che cosa sta succedendo dentro, anche se non capisco tutto, quando non so la lingua specifica il file è in posso usare le utilità di testo su di esso:. Cat. grep. sed. diff - è il nome. Non deve nemmeno essere me stesso che utilizza gli strumenti che possono essere un'applicazione o uno script di shell che ho scritto che rileva sto lavorando con un file di testo e utilizzare gli strumenti appropriati. I file con un tipo che inizia con l'applicazione d'altra parte si può fidare di essere macchina soltanto leggibile. Utilizzando applicationjava-VM per file. class è totalmente bene dal momento che solo un computer in grado di leggere che - così come applicationzip e applicationvnd. oasis. opendocument. spreadsheet. Uno strumento che non riesce male con applicationx-php è la svn di cui sopra. Rileva i file di testo come ho descritto, utilizzando il MIME tipi di supporti parte. Impostare il tipo MIME di un file. php per applicationx-php conduce al problema che gestisce i file PHP in formato binario, quindi non li diffing - rendendo diff in progetti PHP inutilizzabile. Abbiamo dovuto tornare a textx-php nei nostri repository SVN. Lo stesso problema si pone quando si utilizza il tipo ufficiale applicationjavascript. Il bug report associato suggerisce di mettere un certo numero di tipi di applicazioni sul questo è un elenco di file di testo. E questo è esattamente il problema: come si suppone che un programmatore per rilevare se un file è leggibile e può essere visualizzato con IANA dettare realtà che deriva verso tipi di applicazioni, il tipo MIME è più nessun indicatore. Conclusionx200B Mettere linguaggi di programmazione nel gruppo applicazione ha significatività statistica ed è sostenuta anche da precedenti decisioni IANA. Così sembra proprio inevitabile utilizzare applicationx-php come tipo MIME per i file. php - ma fa una vita sviluppatori harder. Apache Modulo modmime Questo modulo è utilizzato per associare vari pezzi di meta informazioni con i file dalle loro estensioni dei file. Questa informazione si riferisce il nome del file del documento al suo mime-type, la lingua, set di caratteri e la codifica. Queste informazioni vengono inviate al browser, e partecipa a negoziazione dei contenuti, in modo che le preferenze degli utenti siano rispettati al momento di scegliere uno dei vari file possibile servire. Vedere modnegotiation per ulteriori informazioni sulla negoziazione dei contenuti. Le direttive AddCharset. AddEncoding. AddLanguage e AddType sono tutti utilizzati per mappare le estensioni dei file sul meta-dati per quel file. Rispettivamente hanno impostato il set di caratteri, Content-Encoding, contenuti in lingua e tipo MIME (content-type) di documenti. La direttiva TypesConfig viene utilizzato per specificare un file che associa anche le estensioni su tipi MIME. Inoltre, modmime può definire il gestore e filtri che hanno origine e il contenuto di processo. Il AddHandler direttive. AddOutputFilter. e AddInputFilter controllare i moduli o script che servono il documento. La direttiva consente MultiviewsMatch modnegotiation considerare queste estensioni di file da includere quando si prova Multiviews partite. Mentre modmime associa meta-informazioni con le estensioni dei file, il server di base fornisce le direttive che vengono utilizzati per associare tutti i file in un determinato contenitore (es. LtLocationgt. LtDirectorygt. O ltFilesgt) con particolare meta-informazioni. Queste direttive sono ForceType. SetHandler. SetInputFilter. e SetOutputFilter. Le direttive fondamentali sovrascrivono tutti i mapping estensione del file definiti in modmime. Si noti che la modifica del meta-informazioni per un file non cambia il valore del Last-Modified. Così, le copie memorizzate nella cache in precedenza possono ancora essere utilizzati da un cliente o un proxy, con le intestazioni precedenti. Se si cambia il meta-informazioni (lingua, tipo di contenuto, set di caratteri o codifica) potrebbe essere necessario toccare file interessati (aggiornamento loro ultima data di modifica) per garantire che tutti i visitatori sono ricevere le intestazioni dei contenuti corretti. Direttive I file possono avere più di una estensione, e l'ordine delle estensioni è normalmente irrilevante. Ad esempio, se il file welcome. html. fr mappe sul tipo di contenuto texthtml e lingua francese quindi il file welcome. fr. html mapperà sulla esattamente le stesse informazioni. Se più di un estensione è dato che le mappe sullo stesso tipo di meta-informazioni, poi verranno utilizzate quello a destra, fatta eccezione per le lingue e codifiche di contenuti. Per esempio, se. gif mappe per il tipo MIME imagegif e le mappe html al tipo MIME texthtml. quindi il welcome. gif. html file verrà associato al tipo MIME texthtml. Lingue e codifiche di contenuti sono trattati di accumulazione, perché si può assegnare più di una lingua o di codifica per una particolare risorsa. Ad esempio, il file di welcome. html. en. de verrà consegnato con Content-Language: en, de e Content-Type: texthtml. Si deve prestare attenzione quando un file con più estensioni viene associato sia con un tipo MIME e un gestore. Questo provocherà solitamente richiesta gestita dal modulo associato al gestore. Ad esempio, se l'estensione. imap viene mappato il imap-file di gestore (da modimagemap) e l'estensione. html è mappato al tipo MIME texthtml. quindi il world. imap. html file verrà associato sia con il gestore imap-file e la texthtml MIME-tipo. Quando viene elaborato, il gestore imap-file verrà utilizzato, e così sarà trattato come un file modimagemap mappa immagine. Se invece si preferisce solo l'ultima parte separata da punti del nome del file da mappare ad un particolare pezzo di meta-dati, quindi non utilizzare il componente aggiuntivo direttive. Ad esempio, se si desidera avere il file foo. html. cgi elaborato come uno script CGI, ma non il file bar. cgi. html. quindi invece di utilizzare AddHandler. cgi cgi-script. usare Configura gestore sulla base di estensione finale solo ltFilesMatch. cgigt SetHandler cgi-script ltFilesMatchgt Un file di un particolare tipo MIME può inoltre essere codificato un modo particolare per semplificare la trasmissione su Internet. Mentre questo solitamente riferimento alla compressione, come gzip. può anche riferirsi alla crittografia, tale pgp o una codifica come uuencoding, che è progettato per trasmettere un file binario in formato ASCII (testo). Il RFC HTTP1.1. Sezione 14.11 la mette in questo modo: il campo entity-header Content-Encoding è usato come modificatore per la media-tipo. Quando presente, il suo valore indica quali sono state applicate ulteriori codifiche di contenuto all'entità corpo, e quindi quali meccanismi decodifica devono essere applicate per ottenere la media-type riferimento il campo di intestazione Content-Type. Content-Encoding è principalmente utilizzato per consentire un documento da comprimere senza perdere l'identità del suo tipo di supporto sottostante. Utilizzando più di una estensione del file (vedere la sezione sopra circa più estensioni di file), è possibile indicare che un file è di un tipo particolare. e ha anche una particolare codifica. Ad esempio, è possibile avere un file che è un documento di Microsoft Word, che viene pkzipped per ridurne le dimensioni. Se l'estensione. doc è associata al tipo di file di Microsoft Word, e l'estensione. zip è associato con la codifica del file pkzip, quindi il file Resume. doc. zip sarebbe stato conosciuto per essere un documento Word pkziped. Apache manda un header Content-encoding con la risorsa, in modo da dire al browser del client sul metodo di codifica. Oltre al tipo e la codifica del file, un altro pezzo importante di informazioni è quello che il linguaggio di un particolare documento è in, e in che personaggio set dovrebbe essere visualizzato il file. Ad esempio, il documento potrebbe essere scritta in alfabeto Vietnamita, o in cirillico, e dovrebbe essere visualizzato come tale. Queste informazioni, anche, si trasmette nelle intestazioni HTTP. Il set di caratteri, la lingua, la codifica e il tipo MIME sono tutti utilizzati nel processo di negoziazione del contenuto (Vedi modnegotiation) per determinare quale documento per dare al cliente, quando ci sono documenti alternativi a più di un set di caratteri, la lingua, la codifica o il mimo tipo. Tutte le associazioni estensioni dei file creati con AddCharset. AddEncoding. AddLanguage e AddType direttive (e le estensioni elencate nella MimeMagicFile) partecipano a questo processo di selezione. estensioni dei file che sono associati solo con il AddHandler. direttive AddInputFilter o AddOutputFilter possono essere inclusi o esclusi dalla corrispondenza utilizzando la direttiva MultiviewsMatch. Per trasmettere questo ulteriore informazioni, Apache manda opzionalmente un header Content-Language, per specificare la lingua che il documento è in, e in grado di aggiungere ulteriori informazioni sul l'header Content-Type per indicare il set di caratteri particolare che dovrebbe essere utilizzato per rendere correttamente il informazione. Content-Language: en, fr Content-Type: textplain charsetISO-8859-1 La specifica del linguaggio è la abbreviazione di due lettere per la lingua. Il charset è il nome del set di caratteri particolare che dovrebbe essere usato. La direttiva AddEncoding mappa i dati estensioni dei file per il tipo di codifica specificato. MIME-ENC è la codifica MIME da utilizzare per i documenti che contengono l'estensione. Questa mappatura viene aggiunto a qualsiasi già in vigore, sovrascrivendo qualsiasi mapping già esistenti per la stessa estensione. AddEncoding x-gzip. gz AddEncoding x-compress. Z Questo farà sì che i nomi dei file che contengono l'estensione. gz per essere contrassegnato come codificati usando la codifica x-gzip, e nomi di file che contengono l'estensione. Z di essere contrassegnati come codificati con x-compress. I vecchi clienti si aspettano x-gzip e x-compress. tuttavia la norma impone che theyre equivalente a gzip e comprimere rispettivamente. Apache fa paragoni codifica del contenuto ignorando qualsiasi X - leader. Quando si risponde con una codifica Apache userà qualsiasi forma (cioè. X-foo o foo) il cliente richiesto. Se il cliente non ha ancora specificamente richiesta una forma particolare Apache userà la forma data dalla direttiva AddEncoding. Per rendere questa lunga storia breve, si dovrebbe sempre usare x-gzip e x-impacco per queste due codifiche specifiche. codifiche più recenti, come ad esempio sgonfiare devono essere specificati senza la X. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. I nomi dei file possono avere più estensioni e l'argomento estensione saranno confrontati con ciascuno di essi. La direttiva AddLanguage mappa la data estensione del file per la lingua contenuto specificato. MIME-Lang è il linguaggio MIME dei nomi di file contenenti estensione. Questa mappatura viene aggiunto a qualsiasi già in vigore, sovrascrivendo qualsiasi mapping già esistenti per la stessa estensione. AddEncoding x-comprimere. Z AddLanguage en. en AddLanguage fr. fr Poi il documento xxxx. en. Z sarà trattato come un documento inglese compresso (così come il documento xxxx. Z.en). Anche se la lingua dei contenuti è segnalato per il cliente, il browser è improbabile che utilizzare queste informazioni. La direttiva AddLanguage è più utile per la negoziazione dei contenuti. dove il server restituisce uno da diversi documenti basati sul preferenza clienti di lingua. Se più assegnazioni lingua sono fatti per la stessa estensione, l'ultimo incontrato è quello che viene utilizzato. Cioè, per il caso di: AddLanguage en. en AddLanguage it-it. en AddLanguage it-it documenti con estensione. IT. EN sarebbero trattati come it-it. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. I nomi dei file possono avere più estensioni e l'argomento estensione saranno confrontati con ciascuno di essi. AddOutputFilter è disponibile solamente in Apache 2.0.26 e successive. La direttiva AddOutputFilter associa l'estensione estensione del file ai filtri che elaborare risposte dal server prima di essere inviati al client. Questo è in aggiunta a qualsiasi filtri definiti altrove, tra cui SetOutputFilter e direttiva AddOutputFilterByType. Questa mappatura è fusa su qualsiasi già in vigore, ignorando tutti i mapping che esistono già per la stessa estensione. Ad esempio, la seguente configurazione elaborerà tutti i file. shtml per server-side include per poi comprimere l'output utilizzando moddeflate. AddOutputFilter INCLUDESDEFLATE shtml Se viene specificato più di un filtro, essi devono essere separati da virgola nell'ordine in cui devono elaborare il contenuto. L'argomento filtro è case-insensitive. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. I nomi dei file possono avere più estensioni e l'argomento estensione saranno confrontati con ciascuno di essi. La direttiva AddType mappa i dati estensioni di file sul tipo di contenuto specificato. MIME-tipo è il tipo MIME da utilizzare per i nomi di file contenenti l'estensione. Questa mappatura viene aggiunto a qualsiasi già in vigore, sovrascrivendo qualsiasi mapping già esistenti per la stessa estensione. Questa direttiva può essere utilizzata per aggiungere mappature non elencati nel file tipi MIME (si veda la direttiva TypesConfig). AddType imagegif. gif Si raccomanda che i nuovi tipi MIME essere aggiunti utilizzando la direttiva AddType piuttosto che modificare il file TypesConfig. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. I nomi dei file possono avere più estensioni e l'argomento estensione saranno confrontati con ciascuno di essi. Disponibile in Apache 2.0.26 e successive. MultiviewsMatch permette tre comportamenti diversi per modnegotiation s caratteristica Multiviews. Multiviews permette una richiesta per un file, ad esempio index. html. per abbinare tutte le estensioni negoziate a seguito della richiesta di base, ad esempio, index. html. en. index. html. fr. o index. html. gz. L'opzione NegotiatedOnly prevede che ogni estensione che segue il nome di base deve correlare a un interno modmime riconosciuto per la negoziazione dei contenuti, ad esempio, Charset, Content-Type, lingua, o la codifica. Questa è la più rigorosa applicazione con il minor numero di effetti collaterali imprevisti, ed è il comportamento predefinito. Per includere le estensioni associato a gestori di filtri Andor, impostare la direttiva MultiviewsMatch a uno gestori. Filtri. o entrambe le parole chiave opzionali. Se tutti gli altri fattori sono uguali, sarà servito il file più piccolo, ad esempio nel decidere tra index. html. cgi di 500 byte e index. html. pl di 1000 byte, il file. cgi avrebbe vinto in questo esempio. Gli utenti di file. asis potrebbero preferire di utilizzare l'opzione Handler, se. asis file sono associati con l'Asis-gestore. Si può finalmente consentire a qualsiasi estensioni a partita, anche se modmime doesnt riconoscere l'estensione. Questo è stato il comportamento di Apache 1.3, e può causare risultati imprevedibili, come ad esempio servire old o bak file il webmaster non si aspettava di essere servito. Ad esempio, la seguente configurazione permetterà gestori e filtri per partecipare a Multviews, ma escluderà i file sconosciuti: Filtri MultiviewsMatch Handlers Rimuove tutte le associazioni di set di caratteri per un set di estensioni di file RemoveCharset estensione estensione. host virtuale, directory. htaccess RemoveCharset è disponibile solamente in Apache 2.0.24 e successive. La direttiva RemoveCharset rimuove tutte le associazioni set di caratteri per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. RemoveCharset. html. shtml Rimuove tutte le associazioni di codifica dei contenuti per una serie di estensioni di file RemoveEncoding estensione estensione. host virtuale, directory. htaccess La direttiva RemoveEncoding rimuove tutte le associazioni di codifica per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. Un esempio del suo utilizzo potrebbe essere: foo. htaccess: AddEncoding x-gzip. gz AddType textplain. asc ltFiles. gz. ascgt RemoveEncoding. gz ltFilesgt Questo farà sì che foo. gz per essere contrassegnato come viene codificato con il metodo gzip, ma foo. gz. asc come un file di testo in chiaro in chiaro. direttive RemoveEncoding vengono elaborate dopo eventuali direttive AddEncoding definisce, quindi è possibile che potrebbero annullare gli effetti di quest'ultimo se entrambi si verificano all'interno della stessa configurazione della directory. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. La direttiva RemoveHandler rimuove tutte le associazioni gestore per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. Un esempio del suo utilizzo potrebbe essere: foo. htaccess: AddHandler analizzati dal server foobar. htaccess. html: Questo ha l'effetto di ritorno file. html nella directory pippo ad essere trattati come normali file, piuttosto che come candidati per l'analisi (vedi il modulo modinclude). L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. RemoveInputFilter è disponibile solamente in Apache 2.0.26 e successive. La direttiva RemoveInputFilter rimuove tutte le associazioni del filtro di ingresso per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. Rimuove tutte le associazioni di lingua per un insieme di estensioni di file RemoveLanguage estensione estensione. host virtuale, directory. htaccess RemoveLanguage è disponibile solamente in Apache 2.0.24 e successive. La direttiva RemoveLanguage rimuove tutte le associazioni di lingua per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. Rimuove tutte le associazioni del filtro di uscita per un insieme di estensioni di file estensione estensione RemoveOutputFilter. host virtuale, directory. htaccess RemoveOutputFilter è disponibile solamente in Apache 2.0.26 e successive. La direttiva RemoveOutputFilter rimuove tutte le associazioni del filtro di uscita per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. Rimuove tutte le associazioni tipo di contenuto per un insieme di estensioni di file estensione estensione RemoveType. host virtuale, directory. htaccess La direttiva RemoveType rimuove tutte le associazioni di tipo MIME per i file con le estensioni indicate. Questo permette di file. htaccess nelle sottodirectory per annullare tutte le associazioni ereditate dalla directory superiori oi file di configurazione del server. Un esempio del suo utilizzo potrebbe essere: foo. htaccess: Questo consente di eliminare ogni trattamento speciale di file. cgi nella directory foo e qualsiasi sotto di esso, causando i file da trattare come del DefaultType. direttive RemoveType vengono elaborate dopo eventuali direttive questa direttiva, quindi è possibile che potrebbero annullare gli effetti di quest'ultimo se entrambi si verificano all'interno della stessa configurazione della directory. L'argomento estensione è case-insensitive e può essere specificata con o senza un punto iniziale. La direttiva TypesConfig imposta la posizione del file di configurazione dei tipi MIME. File-percorso è relativo a ServerRoot. Questo file imposta l'elenco predefinito di applicazioni da estensioni dei file per i tipi di contenuto. La maggior parte degli amministratori utilizzano il file mime. types fornito, che associa le estensioni dei file comuni con IANA registrato tipi di contenuto. L'elenco aggiornato è mantenuta a iana. orgassignmentsmedia-typesindex. html. Questo semplifica il file httpd. conf, fornendo la maggior parte delle definizioni di media-tipo, e può essere ignorata dalle direttive AddType, se necessario. Si consiglia di non modificare il file mime. types, perché può essere sostituito quando si aggiorna il server. Il file contiene le linee nel formato degli argomenti di una direttiva AddType: Il caso del prolungamento non importa. Le righe vuote e linee che iniziano con un carattere cancelletto () vengono ignorati. Si prega di non inviare richieste al progetto Apache HTTP Server per aggiungere eventuali nuove voci nel file mime. types distribuito a meno che (1) si sono già registrati con IANA, e (2) che usano ampiamente accettate, non in conflitto estensioni dei file su più piattaforme . richieste categoryx-sottotipo verranno automaticamente respinte, così come tutte le nuove estensioni di due lettere come si sarà probabilmente il conflitto più tardi con la lingua e set di caratteri già affollato spazio dei nomi. Avviso: Non si tratta di una sezione QampA. Commenti poste qui dovrebbero essere puntati verso i suggerimenti su come migliorare la documentazione o il server, e possono essere nuovamente rimossi dal nostro staff se sono implementato, o considerati invalidoff-topic. Domande su come gestire il server HTTP Apache devono essere indirizzate sia a nostro canale IRC, httpd, su Freenode, o inviati alla nostra mailing list. Copyright 2017 Foundation La Apache Software. Rilasciato sotto la licenza Apache, versione 2.0.Im cercando di trovare il tipo MIME di un'immagine. PHP ha la funzione getimagesize ma che richiede solo un nome di file, mentre io ho una risorsa immagine invece - cioè un'immagine creata da imagecreatefromstring. Ho trovato il imagesx funzioni e imagesy che restituiscono il widthheight da una risorsa, ma non posso trovare qualsiasi funzione che mi dica il tipo MIME da una risorsa. Qualcuno sa di un modo per fare questo Nota: A causa di un server strano impostare, smussiamo file readwrite dal server normalmente, solo attraverso uno strato FTP (che è dove ho letto i dati di immagine a partire da). chiesto 5 febbraio 10 alle 12:21 Il imagefiletypefrombinary funzione non è fail-safe. a volte un file viene caricato, ma il tipo MIME non è un imagelttypegt. fare il caso pregmatch insensitive aggiungendo un 39i39 dopo il finale in avanti-slash. (Fatto il cambio di script di cui sopra, ma bisogna aspettare per aproval) l'uso di questa funzione è una buona dal momento che non tutti i webhosts consentono di utilizzare il Fileinfo o il exif estensioni. ndash SomeOne1 2 gennaio 12 a 0:44 Naturalmente non è fail-safe. Esso controlla solo il bytesquot quotmagic all'inizio della imagedata. Aggiunta quotiquot alla regex è piuttosto cattiva idea. I file binari hanno alcuna nozione di awarenessquot quotcase. ndash fireweasel 6 giugno 12 alle 20:29 Un'immagine creata usando imagecreatefromstring ha nessun tipo MIME più, esso viene decodificato dal suo formato nativo e conservato in GDs formato interno. La stessa domanda è stato chiesto un po 'indietro con lo stesso risultato. L'unico modo per andare è quello di catturare l'immagine prima che si imagecreatefromstring Ed, e in qualche modo prendere le informazioni formato da esso. Tu dici che non puoi fare le operazioni di file readwrite sul vostro sistema, quindi basta scrivendo il file è fuori questione. Il fatto che getimagesize () cant letta dalle variabili è noto e si lamentava: bugs. phpbug. phpid44239 Il ragazzo ci parla di una soluzione elegante: Registrazione di un nuovo involucro torrente che consente operazioni sui file sulle variabili. Si tratta di una opzione sul configurazione del server risposto 5 febbraio 10 a 12:29 dispiace, come ho detto can39t file readwrite al server normalmente, in modo da it39s non è possibile utilizzare getimagesize perché non c'è il nome del file. EDIT: tizio, don39t essere così impaziente, stavo scrivendo una spiegazione. ) Ndash DisgruntledGoat 5 febbraio 10 a 12:40 Can39t essere fatto solo con una risorsa GD, mi spiace. Ma se si imagecreatefromstring. si hanno i dati originali ad un certo punto, proprio perché non scriverlo su disco e fare un getimagesize. Sono d'accordo it39s stupido, ma it39ll fare il lavoro. EDIT: That39s perché ho primo commento e poi votare) Secondo Edit: Ah, si can39t scrivere su disco. E io lo prendo si can39t utilizzare il ftp: 4747 wrapper per imagesize () ndash Pekka 5 febbraio 10 alle 12:41 FWIW, ho appena incontrato questo. PHP 5.3 non è disponibile al momento così getimagesizefromstring () non è un'opzione (né FileInfo), e ho didn39t voglio complicare l'attuazione con l'involucro VariableStream. La cosa migliore sta usando i dati: 4747 involucro, che permette di creare un in-memory URI che getimagesize () in grado di leggere. Inoltre ottimizza la richiesta codifica solo una piccola stringa di dati binari. Il nocciolo della implementazione è qui: gist. github3751491 ndash Joe 19 settembre 12 19:01

No comments:

Post a Comment