From: Ashley Sheridan on
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
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
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
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
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