需要帮助处理 ZIP 文件
这是我的场景:
- 我上传一个zip文件
- 检查zip文件中的每个文件
- 如果文件!=图像,则将文件移动到目的地
- 如果文件==图像,调整图像大小并移动到目的地
我用谷歌搜索并看到了不同的解决方案,但没有一个在哪里人们可以在将文件保存到最终目的地之前对其进行处理。
这是我到目前为止得到的功能:
// Extract zip file and return files in an array.
private function processZip() {
$zip = new ZipArchive;
$tmp_dir = FB_PLUGIN_DIR.'tmp/';
// Extract files to tmp dir
if ($zip->open($this->file['tmp_name']) === TRUE) {
//Check if temp dir exists. If not, create one.
if (!is_dir($tmp_dir)) {
mkdir($tmp_dir, 0700);
}
$zip->extractTo($tmp_dir);
$zip->close();
/* Process extracted files */
foreach(glob($tmp_dir.'*.*') as $filename) {
// Somehow get MIME type here without using 'finfo' and 'mime_content_type'
// I haven't installed PEAR and 'mime_content_type' is decapricated.
}
return '1'; // success
} else {
return "0"; // fail
}
}
我不确定我是否朝着正确的方向前进。不知何故,我认为我应该能够在“ZIP 循环”中处理文件。
有没有办法读取 ZIP 文件中的文件,确定 MIME 类型,然后处理文件?
我找到了这个例子:http://www.java-samples.com/showtutorial。 php?tutorialid=985
我认为它接近我的需要。但不知道要修改什么。
This is my scenario:
- I upload a zip file
- Check each file in zip file
- If file != image, then move file to destination
- if file == image, resize image and move to destination
I googled around and seen different solutions, but none where one can process files before saving them at the final destination.
This is the function I got so far:
// Extract zip file and return files in an array.
private function processZip() {
$zip = new ZipArchive;
$tmp_dir = FB_PLUGIN_DIR.'tmp/';
// Extract files to tmp dir
if ($zip->open($this->file['tmp_name']) === TRUE) {
//Check if temp dir exists. If not, create one.
if (!is_dir($tmp_dir)) {
mkdir($tmp_dir, 0700);
}
$zip->extractTo($tmp_dir);
$zip->close();
/* Process extracted files */
foreach(glob($tmp_dir.'*.*') as $filename) {
// Somehow get MIME type here without using 'finfo' and 'mime_content_type'
// I haven't installed PEAR and 'mime_content_type' is decapricated.
}
return '1'; // success
} else {
return "0"; // fail
}
}
I'm not sure if I'm going in the right direction here. Somehow I think I should be able to process the files while in the "ZIP loop".
Is there a way I can read the files in the ZIP file, determin the MIME type and then process file?
I found this example: http://www.java-samples.com/showtutorial.php?tutorialid=985
I think it's close to what I need. But not sure what to modify.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解耦您的流程。首先从 ZIP 文件中提取所有内容,然后扫描文件中的图像文件并进行处理。
这是一个更简单的过程,并且可以更容易地分解以处理更大的 zip 文件。
Decouple your processes. Extract everything from the ZIP file first, then scan the files for image files and process them.
It's a simpler process, and can be more easily decomposed for dealing with larger zipfiles.
以下是我过去处理 zip 文件而不提取整个文件的方法。
不幸的是,我找不到一种方法来实际读取文件信息而不提取它,所以我使用了文件扩展名检测。
Here's how I've processed a zip file in the past without extracting the whole thing
Unfortunately, I couldn't find a way to actually read the file info without extracting it so I've gone with file extension detection.