Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在csv中保存列表图像url中的图像_Php_Image_File_Csv - Fatal编程技术网

Php 如何在csv中保存列表图像url中的图像

Php 如何在csv中保存列表图像url中的图像,php,image,file,csv,Php,Image,File,Csv,我想将url中的图像保存到我的目录中,并在下载到csv后保存其图像名称 我编写了以下存储图像的代码。但它没有像我想要的那样工作。 在下面的代码中,$img是从csv获取url的变量 假设我有1000多个csv产品,每个产品都有像这样的图片url www.example.com/images/image1.jpg 因此,我想将此图像下载到本地目录/服务器目录,并在下载到csv文件后存储其图像名称,这样我就可以只将图像名称添加到数据库表中 设置时间限制(1000); 而($url=$respons

我想将url中的图像保存到我的目录中,并在下载到csv后保存其图像名称

我编写了以下存储图像的代码。但它没有像我想要的那样工作。 在下面的代码中,$img是从csv获取url的变量

假设我有1000多个csv产品,每个产品都有像这样的图片url www.example.com/images/image1.jpg

因此,我想将此图像下载到本地目录/服务器目录,并在下载到csv文件后存储其图像名称,这样我就可以只将图像名称添加到数据库表中

设置时间限制(1000);
而($url=$response->fetch()){
$my\u image=文件获取内容($img);
$my_file=fopen('/csvfiles/','w+');
fwrite($myu文件,$myu图像);
fclose($myu文件);

}
尝试以下代码

set_time_limit(1000);
while ($url = $response->fetch()) {
    $my_image = file_get_contents($img);
    // check stricly that you have content of image
    if ($my_image !== false) {
        // download the image and store in the database.
        $my_file = fopen('/csvfiles/', 'w+');
        fwrite($my_file, $my_image);
        fclose($my_file);
    }
}

您还需要一个文件名,而不仅仅是一个目录:

// download the inage from the internet:
$my_image = file_get_contents($url);

// get filename from url:
$filename = basename($url);

$path = '/csvfiles/' . $filename;

// save image to that file:
$my_file = fopen($path,'w+');
fwrite($my_file, $my_image);
fclose($my_file);

// save $filename to DB

嗨,下面的代码对我有用。。希望它能帮助别人

谢谢@Gavriel和@Alankar

if(!empty($img)){
    $my_image = file_get_contents($img);
    file_get_contents(filename)

    $filename = $data[0] . ".jpg";
     echo $filename. "\n";
    if(!file_exists($filename))
        {
            $my_file = fopen($filename,'w+');
            file_put_contents($filename, $my_image);
            echo $filename . "\n";

        }
    }
    $image = "/uploads/" . $filename;
    echo $image . "\n";
这里
$img
存储图像的url。这是从csv文件获取的


这里的
数据[0]
是用于唯一存储图像名称的csv列。所以我们可以使用
file_exists()否则,每当我一次又一次地运行脚本时,它会一次又一次地存储图像,并按随机临时名称存储

csv文件的可能副本在这里真的很重要吗?我认为,上面的评论应该会有所帮助。是的,csv文件很重要。。由于我有csv格式的所有产品信息,在导入产品时,我还想从其url下载图像。而且无法手动下载1000+个产品图像。我检查了上述解决方案,但它不适用于这种情况。在上面的解决方案中,他们只从特定的页面下载图像,并直接重命名它。所以这里的情况不同。这里的$response是什么?或者它应该是$img,用于存储来自csv的图像url。。请确认。代码将帮助您确保您拥有来自URL的图像,如果没有,则您决定将存储在CSV文件中的内容,而不是图像文件名。请说出文件的默认名称或noimage.jpg等。我尝试了此解决方案,但遇到致命错误PHP致命错误:调用成员函数fetch()非对象致命错误:对非对象的成员函数fetch()的调用
$response
未定义请检查
之前的行,而
$response
不为空。这应该是您的记录资源。您好@Gavriel这对我很有用,但我不想更改图像的原始名称,因为它包含产品信息。因此,有没有一种方法或替代方法不使用tempnam()并使用原始名称保存图像。