【问题标题】:php ziparchive renamed file is emptyphp ziparchive 重命名文件为空
【发布时间】:2015-06-07 07:12:15
【问题描述】:

我正在使用 php 创建一个包含一些图像的 ziparchive。当我尝试重命名文件时,这很好用。这是有效的代码:

$zip_archive->open(tempnam("tmp", "zip"), ZipArchive::OVERWRITE);
foreach ($images as $image) {
  $path = $image['path'];
  $title = $image['title'];
  if(file_exists($path)){
    $zip_file->addFile($path, pathinfo($path, PATHINFO_BASENAME));
  }
}
$zip_archive->close();

$images 是一个数组,可能如下所示:

$images = array(
    'path' => array(
        'folder/title1.jpg',
        'folder/title2.jpg'
    ),
    'title' => array(
        'new_name1.jpg',
        'new_name2.jpg'
    )
)

我想将图片命名为标题。

$zip_file->addFile($path, $title);

但是发生的事情是 zip 中以标题为名称的文件是空的。我做错了什么?

【问题讨论】:

  • $image 是数组还是路径?你在 $image 中存储了什么?
  • 您能否详细说明您的问题。 $imge 和 $title 是什么。
  • $images 是一个数组。每个条目也是一个包含两个条目的数组:路径和标题,它们都是字符串。路径是我要存储在 ziparchive 中的文件/图像的绝对路径。标题包含 ziparchive 中文件/图像的新名称。
  • 你能用数组更新你的问题吗

标签: php file rename ziparchive


【解决方案1】:

如果我运行这个

$images = array(
    'path' => array(
        'folder/title1.jpg',
        'folder/title2.jpg'
    ),
    'title' => array(
        'new_name1.jpg',
        'new_name2.jpg'
    )
);

$i = 0;
foreach($images as $image)
    var_dump($image, $i++);

我明白了

array(2) {
  [0]=>
  string(17) "folder/title1.jpg"
  [1]=>
  string(17) "folder/title2.jpg"
}
int(0)
array(2) {
  [0]=>
  string(13) "new_name1.jpg"
  [1]=>
  string(13) "new_name2.jpg"
}
int(1)

这意味着这些

$path = $image['path'];
$title = $image['title'];

都是NULL

您有两种方法可以解决此问题:

  • 改变数组的样子

    $images = array(
        [0] => array(
            'path' => 'folder/title1.jpg',
            'title' => 'new_name1.jpg'
        ),
        [1] => array(
            'path' => 'folder/title2.jpg'
            'title' => 'new_name2.jpg',
        )
    );
    

    在这种情况下,您的初始代码应该可以工作

  • 改变访问数组的方式,比如

    for($i = 0;$i < count($images['path']);$i++)
    {
        $path = $image['path'][$i];
        $title = $image['title'][$i];
    }
    

    这样可以确保图片的路径和标题具有相同的索引,但不建议这样做,因为数组必须是有序的。

我建议你改变数组,你的代码应该没问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 2015-07-01
    • 2013-08-27
    • 2014-09-09
    • 2014-01-20
    • 2016-07-17
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多