top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

PHP: How to capture uploaded file data

+1 vote

I'm writing a PHP extension now in c/c++. User uploads a file (could be POST or PUT method, but I can limit it to POST only). I need to capture the file data while being uploaded, without writing it to disk on the server. I need to process the data and (maybe, depending on a situation) send it somewhere else or save it to disk.
Of course I know, that I can process the file after it has been uploaded (saved on disk on the server), but I would like to avoid it. I also need to do something opposite: I need to generate a file "on the fly" and send it
to the user. All metadata of the generated file is known beforehand (e.g. size, name).

I've been searching around for some time now and I could not find anything even close to the solution. Is there any example(s) or existing PHP extension that do(es) something like this (at least something simmilar) ? If you could give me any pointers that would be awesome.

posted Sep 27, 2013 by Abhay Kulkarni

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote

The question I have is why? Should your upload fail for any reason you've got a half processed file that is non-recoverable. No do-overs. If you stick to the standard processes with out the extension,

Save somewhere (or leave in temp upload folder)
Send result back to user 
Unlink file

Generating the file and sending it to the user is also pretty standard

Create your dataset
Send appropriate headers
Send data
Close connection

For this, there usually isn't a need to save the file. You may run into issues streaming the data to certain browsers. Also one of the main downsides to your upload is high load situations or large file situations (where file size exceeds php's upload limit). My personal preference is to save that file to disk so that if needed I can work with it later ( if say the server load is high) and email the results to the user.

answer Sep 28, 2013 by Sheetal Chauhan
Similar Questions
0 votes

I have a requirement, wherein I need to allow vanilla uploads of files to a HTTPD server.

Any client can upload any number of files (one at a time). Also, there is just one directory, where the files get stored "finally" (that is, after being copied from the temporary location, via "move_uploaded_file")

Also, I have been able to get the simple file uploading running via PHP, by picking up one of the numerous "Hello World" examples available :)

Now, I am facing the following use-case ::

1) User 1 starts uploading a large file, say "big_file.avi".

2) Meanwhile, user 2 also starts uploading a (different) file, but with the same name "big_file.avi".

In an ideal scenario, user 2 should be prompted with a message, that a file of the same name is already being uploaded by someone else somewhere. Is there a way to do this?

( Note that, had the user 2 started uploading AFTER user 1 had finished with the upload, we could probably modify the PHP-script at the sever-side, to let user-2 know that a file of the same name already exits. But I am failing to find a solution, when the user 2 starts the upload WHILE the large file of user 1 is in the process of completing uploading).

Any way the issue may be solved?

+3 votes

I am very keen to know that which one is the best codec and how to use with the best one out of FFmpeg, avconv and Gstreamer ?