php - 如何下载并提取压缩的 CSV 文件并将 CSV 文件的内容放入 MySQL 表中

标签 php mysql linux zip filesystems

我正在尝试编写一个 PHP 脚本以从包含单个 CSV 文件的 Web 服务器下载一个 zip 文件,然后将提取的 CSV 文件的内容加载到现有的 MySQL 数据库表中。

$targetFile = 'data-' . md5(microtime()) . '.zip';
$url = 'http://www.address.com/data.zip';
$out = fopen('/path/to/zip/save/folder/' . $targetFile , 'wb');

$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);

$info = curl_getinfo($ch);

if($info['http_code'] == 200 && $info['content_type'] == 'application/x-zip-compressed') {
  $zh = zip_open('/path/to/zip/save/folder/' . $targetFile);
}
else {
  exit('Download of ZIP file failed.');
}

上面的代码确实设法将文件下载到服务器上具有唯一名称的目录中。但是我无法提取内容。

我试过使用 PHP 的 zip_open 命令来解压缩 zip,但它总是返回错误代码 19 而不是句柄。我检查了传递给 zip_open 函数的路径,它是一个完整的系统路径,即 /path/to/zip/save/folder/data-5384e2306718492958f20e68de95c6fa.zip

注意:

CSV 文件压缩后为 2.5 MB,未压缩时为 30 MB。

最佳答案

请记住在将内容保存为文件之前去除响应 header 。此外,您还可以检查是否有 HTTP/1.1 200 OK 响应,或 301/302 重定向跟随

关于php - 如何下载并提取压缩的 CSV 文件并将 CSV 文件的内容放入 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134337/

相关文章:

php - 两个 mysql 查询似乎比一个查询快,任何人都知道如何在没有开销的情况下组合这些查询?

php - Cakephp从多个表中获取数据

php - MySQL 在使用变量后插入时触发语法错误

linux - 在文件系统中创建文件

linux - wxWidgets 链接问题

php - 如何在 PHPUnit 中以编程方式对测试函数进行排序?

php - Laravel 5 在静态函数中调用非静态函数

c - sigkill 不会终止 C 程序

php - 使用PHP代理图片

php - SQL InnoDB 为一个 LIKE 值检查多个列