From: Ashley Sheridan on 8 Mar 2010 11:14 On Mon, 2010-03-08 at 10:57 -0500, Robert P. J. Day wrote: > hi, i'm interested in the most comprehensive way to determine the > content type of a stream of bytes that's been uploaded to a PHP > script? assuming that the bytes are uploaded simply via a POST > parameter, i can see that there are a couple ways to do it: > > * getimagesize() > * FileInfo > > i've been doing some testing this morning and a few video formats > handed to FileInfo come back as "application/octet-stream" which isn't > particularly informative. and i want to support as many different > formats of image, audio and video as possible. > > so ... what's the best way? oh, by the way, when i used fileinfo, i > didn't bother handing over a magic file. i'm starting to think that > would make a difference. and is there a noticeable advantage to > upgrading to PHP 5.3 since the server (centos 5.4) is currently > running only PHP 5.1.6. thanks. > > rday > -- > > ======================================================================== > Robert P. J. Day Waterloo, Ontario, CANADA > > Linux Consulting, Training and Kernel Pedantry. > > Web page: http://crashcourse.ca > Twitter: http://twitter.com/rpjday > ======================================================================== > If you're wanting to grab details about a clip, what about using mplayer for dealing with video clips. It has more than a few command line options that can return various levels of detail about a media file. You could use the extension of the clip as a hint about what way you can determine a files exact type. So, if a file came in with a jpg, png or gif extension, you could use GD functions to determine if it's really an image. If it's a .avi, .mpg, .mp4, .mp3, .ogg, you could use mplayer to deal with it. This does seem to ba a bit of an area where PHP is lacking. Even the manual pages are cryptic. It seems to suggest that the Mime functions which we should use in-place of deprecated ones themselves rely on those same deprecated functions! Having said that, I've had good results from using "file -f filename" on Linux, which is using version 5.03 on my system. Thanks, Ash http://www.ashleysheridan.co.uk
From: "Robert P. J. Day" on 8 Mar 2010 11:33 On Mon, 8 Mar 2010, Ashley Sheridan wrote: > On Mon, 2010-03-08 at 10:57 -0500, Robert P. J. Day wrote: > > > hi, i'm interested in the most comprehensive way to determine the > > content type of a stream of bytes that's been uploaded to a PHP > > script? assuming that the bytes are uploaded simply via a POST > > parameter, i can see that there are a couple ways to do it: > > > > * getimagesize() > > * FileInfo > > > > i've been doing some testing this morning and a few video formats > > handed to FileInfo come back as "application/octet-stream" which > > isn't particularly informative. and i want to support as many > > different formats of image, audio and video as possible. > > > > so ... what's the best way? oh, by the way, when i used > > fileinfo, i didn't bother handing over a magic file. i'm starting > > to think that would make a difference. and is there a noticeable > > advantage to upgrading to PHP 5.3 since the server (centos 5.4) is > > currently running only PHP 5.1.6. thanks. > If you're wanting to grab details about a clip, what about using > mplayer for dealing with video clips. It has more than a few command > line options that can return various levels of detail about a media > file. You could use the extension of the clip as a hint about what > way you can determine a files exact type. So, if a file came in with > a jpg, png or gif extension, you could use GD functions to determine > if it's really an image. If it's a .avi, .mpg, .mp4, .mp3, .ogg, you > could use mplayer to deal with it. in order to make life as difficult as possible, all i can assume is an incoming stream of bytes. i will have no idea where it came from, or its original file name. all of the mime/type identification has to be done by the PHP script on the server end, based solely on the content. (i'm fairly sure that means a "magic" file will have to be involved.) > This does seem to ba a bit of an area where PHP is lacking. Even the > manual pages are cryptic. It seems to suggest that the Mime > functions which we should use in-place of deprecated ones themselves > rely on those same deprecated functions! i have noticed that. the "mime_content_type()" function looked like a good candidate but it's marked as deprecated. the best option appears to be the Fileinfo stuff. rday -- ======================================================================== Robert P. J. Day Waterloo, Ontario, CANADA Linux Consulting, Training and Kernel Pedantry. Web page: http://crashcourse.ca Twitter: http://twitter.com/rpjday ========================================================================
From: Ashley Sheridan on 8 Mar 2010 11:31 On Mon, 2010-03-08 at 11:33 -0500, Robert P. J. Day wrote: > On Mon, 8 Mar 2010, Ashley Sheridan wrote: > > > On Mon, 2010-03-08 at 10:57 -0500, Robert P. J. Day wrote: > > > > > hi, i'm interested in the most comprehensive way to determine the > > > content type of a stream of bytes that's been uploaded to a PHP > > > script? assuming that the bytes are uploaded simply via a POST > > > parameter, i can see that there are a couple ways to do it: > > > > > > * getimagesize() > > > * FileInfo > > > > > > i've been doing some testing this morning and a few video formats > > > handed to FileInfo come back as "application/octet-stream" which > > > isn't particularly informative. and i want to support as many > > > different formats of image, audio and video as possible. > > > > > > so ... what's the best way? oh, by the way, when i used > > > fileinfo, i didn't bother handing over a magic file. i'm starting > > > to think that would make a difference. and is there a noticeable > > > advantage to upgrading to PHP 5.3 since the server (centos 5.4) is > > > currently running only PHP 5.1.6. thanks. > > > If you're wanting to grab details about a clip, what about using > > mplayer for dealing with video clips. It has more than a few command > > line options that can return various levels of detail about a media > > file. You could use the extension of the clip as a hint about what > > way you can determine a files exact type. So, if a file came in with > > a jpg, png or gif extension, you could use GD functions to determine > > if it's really an image. If it's a .avi, .mpg, .mp4, .mp3, .ogg, you > > could use mplayer to deal with it. > > in order to make life as difficult as possible, all i can assume is > an incoming stream of bytes. i will have no idea where it came from, > or its original file name. all of the mime/type identification has to > be done by the PHP script on the server end, based solely on the > content. (i'm fairly sure that means a "magic" file will have to be > involved.) > > > This does seem to ba a bit of an area where PHP is lacking. Even the > > manual pages are cryptic. It seems to suggest that the Mime > > functions which we should use in-place of deprecated ones themselves > > rely on those same deprecated functions! > > i have noticed that. the "mime_content_type()" function looked like > a good candidate but it's marked as deprecated. the best option > appears to be the Fileinfo stuff. > > rday > -- > > ======================================================================== > Robert P. J. Day Waterloo, Ontario, CANADA > > Linux Consulting, Training and Kernel Pedantry. > > Web page: http://crashcourse.ca > Twitter: http://twitter.com/rpjday > ======================================================================== > What about writing the first n bytes to a file and then passing that to the command line? I'm assuming a Linux server here, but it should do the trick. Thanks, Ash http://www.ashleysheridan.co.uk
From: "Robert P. J. Day" on 8 Mar 2010 11:37 On Mon, 8 Mar 2010, Ashley Sheridan wrote: > What about writing the first n bytes to a file and then passing that > to the command line? I'm assuming a Linux server here, but it should > do the trick. gaaaaah! i was hoping for something that wouldn't make me want to gouge out my eyes with a soup spoon. :-) rday -- ======================================================================== Robert P. J. Day Waterloo, Ontario, CANADA Linux Consulting, Training and Kernel Pedantry. Web page: http://crashcourse.ca Twitter: http://twitter.com/rpjday ========================================================================
From: Ashley Sheridan on 8 Mar 2010 11:35 On Mon, 2010-03-08 at 11:37 -0500, Robert P. J. Day wrote: > On Mon, 8 Mar 2010, Ashley Sheridan wrote: > > > What about writing the first n bytes to a file and then passing that > > to the command line? I'm assuming a Linux server here, but it should > > do the trick. > > gaaaaah! i was hoping for something that wouldn't make me want to > gouge out my eyes with a soup spoon. :-) > > rday > -- > > ======================================================================== > Robert P. J. Day Waterloo, Ontario, CANADA > > Linux Consulting, Training and Kernel Pedantry. > > Web page: http://crashcourse.ca > Twitter: http://twitter.com/rpjday > ======================================================================== > Lol, that's about the easiest way I can think of doing it reliably! Thanks, Ash http://www.ashleysheridan.co.uk
|
Next
|
Last
Pages: 1 2 Prev: best way to determine (MIME) content type of a stream of bytes? Next: Load simulation tests |