I'm trying to write a script that will allow for a two column .csv file (1st column with names, 2nd with image urls) to be read, and the images to then be saved to my hard drive using the first column as the saved file name. I'm able to get some images to save (all the files are created, but some are missing data). The naming convention works the way I want it to, but I need to get all of the files. Anyone care to take a look? Might be worth mentioning that I'm using MAMP but the image addresses in the .csv are all valid (I echoed out the image address with tags, so I know they work).
<?php
//header('Content-Description: File Transfer');
//header('Content-Disposition: attachment; filename ='
//Eli's 2 column CSV grab-n-save file
$file = 'Random.csv'; //put file path of .csv here
$buffer = file_get_contents($file);
//print_r($buffer);
$pattern = '/[,
]/';
$catch = preg_split($pattern, $buffer);
$keep_track = 0;
foreach($catch as $value)
{
if ($keep_track%2 == 0)
{
//if first column is sku
$name = $value;
$keep_track += 1;
}
elseif ($keep_track %2 == 1)
{
//if an image
$name = str_replace(' ', '',$name);
//Change pathname to MAMP specs
$name2 = '/Applications/MAMP/htdocs/picturegrab' . $name . '.jpg';
file_put_contents($name2, file_get_contents($value), FILE_APPEND);
//echo $value . '<br/>';
$keep_track += 1;
echo $name2 . '<br/>' . '<img src='.$value.'><br/>';
}
}
?>
some logic
$file = fopen('Random.csv');
$dir = '/Applications/MAMP/htdocs/picturegrab/';
while (list($name, $img_link) = fgetcsv($file)) {
$name = str_replace(" ", "", $name);
copy($img_link, $dir.$name.'.jpg');
}
updated my example to make it more responsive
also thx to Sam Green with his coment
Remove the whitespace before the opening php tab or else you will get junk whitespace and a headers already sent
error will show up in the csv when you download it
Remove the closing php tag as it is not necessary and will also help to prevent garbage whitespace Why do some scripts omit the closing PHP tag, '?>'?
Use fgetcsv (http://php.net/manual/en/function.fgetcsv.php) to get the data
Use fputcsv (http://php.net/manual/en/function.fputcsv.php) to write the data