0

我正在尝试编写一个脚本,该脚本将允许读取两列 .csv 文件(第一列带有名称,第二列带有图像 url),然后使用第一列将图像保存到我的硬盘驱动器作为保存的文件名。我可以保存一些图像(所有文件都已创建,但有些缺少数据)。命名约定按我想要的方式工作,但我需要获取所有文件。有人愿意看看吗?可能值得一提的是,我正在使用 MAMP,但 .csv 中的图像地址都是有效的(我用标​​签回显了图像地址,所以我知道它们有效)。

<?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 = '/[,\n]/';

    $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/>';
        }

    }
?>
4

2 回答 2

0
  1. 在打开 php 选项卡之前删除空格,否则你会得到垃圾空格,headers already sent当你下载它时会在 csv 中显示一个错误

  2. 删除关闭的 php 标记,因为它不是必需的,也有助于防止垃圾空格为什么有些脚本会省略关闭 PHP 标记,'?>'?

  3. 使用 fgetcsv ( http://php.net/manual/en/function.fgetcsv.php ) 获取数据

  4. 使用 fputcsv ( http://php.net/manual/en/function.fputcsv.php ) 写入数据

于 2013-07-09T13:55:59.290 回答
0

一些逻辑

$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');
}

更新了我的示例以使其更具响应性

也感谢Sam Green的评论

于 2013-07-09T13:49:45.820 回答