我尝试使用Archive :: Zip压缩图像文件。文件在数据/温度/文件中当我遍历目录中的日志并将它们添加到zip文件时,当我只想要图像文件时,我最终得到文件夹层次结构和图像文件。
所以拉链最终包含:
Data
└Temp
└Files
└Image1.jpg
Image2.jpg
Image3.jpg
当我想要包含的zip文件是:
Image1.jpg
Image2.jpg
Image3.jpg
以下是我正在测试的脚本:
#!/usr/bin/perl
use Archive::Zip;
$obj = Archive::Zip->new(); # new instance
@files = <Data/Temp/Files/*>;
foreach $file (@files) {
$obj->addFile($file); # add files
}
$obj->writeToFileNamed("Data/Temp/Files/Images.zip");
答案 0 :(得分:2)
使用chdir切换到目录:
use Archive::Zip;
$obj = Archive::Zip->new(); # new instance
chdir 'Data/Temp/Files';
@files = <*>;
foreach $file (@files) {
$obj->addFile($file); # add files
}
$obj->writeToFileNamed("Images.zip");
答案 1 :(得分:2)
zip档案成员的名称和路径完全独立于真实档案成员的名称和路径。虽然这两个名称通常是相同的,但basename
允许您指定第二个参数,该参数是应存储文件信息的相应存档成员的名称和路径
您可以实现“File::Basename
模块中我使用use strict
要求从完整路径中提取文件名
该程序演示。请注意,您编写的每个Perl程序顶部的use warnings
和use strict;
use warnings;
use Archive::Zip;
use File::Basename 'basename';
my $zip = Archive::Zip->new;
for my $jpg ( glob 'Data/Temp/Files/*.jpg' ) {
$zip->addFile($jpg, basename($jpg));
}
$zip->writeToFileNamed('Data/Temp/Files/Images.zip');
都是必需
{% for item in items %}
<tr>
<form id="adauga_{{ item.stoc_id }}" action="{{ url_for('adauga', denumire_med=item.denumire_med, producator=item.producator) }}" method="POST">
<td>{{ item.stoc_id }}</td>
<td>{{ item.denumire_med }}</td>
<td>{{ item.producator }}</td>
<td>{{ item.data_expirarii }}</td>
<td>{{ item.cant_fl }}</td>
<td>{{ item.fractie }}</td>
<td>{{ '%0.2f' | format(item.pret_fl | float) }}</td>
<td><input type="number" max="{{ item.cant_fl }}" class="form-control" name="unitati"></td>
<td><input type="number" max="{{ item.fractie }}" class="form-control" name="fractii"></td>
<td><button type="submit" class="btn btn-primary" form="adauga_{{ item.stoc_id }}"><i class="fa fa-plus"></i> ADAUGA</button></td>
</form>
</tr>
{% endfor %}