Re: Uploaded CSV -> database
| From: | Ben Litton | Date: | Mon, 17 Oct 2005 20:24:21 +0000 |
| Subject: | Re: Uploaded CSV -> database | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-224248@lists.php.net to get a copy of this message | ||
Actually I think fgetcsv will work with any valid file pointer and at least in PHP 5, the streams implementation will allow you to use a variety of protocols to create the stream.
http://us2.php.net/manual/en/wrappers.php
I understand that it isn't even too teribbly difficult to implement your own stream if one isn't already to your liking, but I'm afraid I haven't found need to go beyond the simple read-a-file-from disk style operation.
Ben
On Mon, 17 Oct 2005 11:45:04 -0400, Jim Moseby <JMoseby@nrbindustries.com> wrote:
-- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/-----Original Message----- From: Brian Dunning [mailto:brian@briandunning.com] Sent: Monday, October 17, 2005 11:39 AM To: php-general@lists.php.net Subject: Re: [PHP] Uploaded CSV -> database It looks like all of those tips will easily cover me for the latter half of the operation. Any tips on how to get the uploaded CSV file into memory in order to attack it with fgetcsv()? I'd rather not ever have to actually write the file to the server's disk. Thanks!If you are using the "standard" file upload facilities, your file is being written to disk when it is being uploaded. As far as I can tell, fgetcsv() will only read a file from disk: <?php // from the manual $row = 1; $handle = fopen ("test.csv","r"); while ($data = fgetcsv ($handle, 1000, ",")) {$num = count ($data); print "<p> $num fields in line $row: <br>\n"; $row++; for ($c=0; $c < $num; $c++) { print $data[$c] . "<br>\n"; }} fclose ($handle); ?> If you are instead using a socket connection to receive the file in a stream from the client, you could assign it to a string variable, and use explode(). These are fairly uncharted territories for me, so others will likely have better answers. JM