我能够检索文件并期待CSV,但它是一个zip文件。我有办法取下拉链,我可以快速检索并取出CSV吗?如果是这样的话?如果不是最好的方法是什么?我搜索并找到了一个6岁的主题,现在回复。
function get_data_zip($url){
//echo $url;exit;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$headers = array();
$headers[] = "Content-Type: application/json";
$headers[] = "X-App-Key: xxx";
$headers[] = "X-User-Key: yyy";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);}
答案 0 :(得分:0)
快速举例
$z = new ZipArchive();
if ($z->open('test.zip')) {
$fp = $z->getStream('test');
if(!$fp) exit("failed\n");
while (!feof($fp)) {
$csv = fgetcsv($fp);
var_dump( $csv );
}
}
http://php.net/manual/en/ziparchive.getstream.php
您需要使用类似的内容来获取zip文件夹中文件的名称
for ($i = 0; $i < $z->numFiles; $i++) {
$name = $z->getNameIndex($i);
// ...
}
http://php.net/manual/en/ziparchive.getnameindex.php
这取决于你是否只想要一个文件,在那里,它总是以相同的方式命名,或者你必须处理多个文件,这些我无法回答。
$z = new ZipArchive();
if ($z->open('test.zip')) {
for ($i = 0; $i < $z->numFiles; $i++) {
$name = $z->getNameIndex($i);
$fp = $z->getStream($name);
if(!$fp) exit("failed on $name\n");
while (!feof($fp)) {
$csv = fgetcsv($fp);
//.. do some other stuff ( save in DB etc. )
var_dump( $csv );
}//end while not end of file
}//end for files
}//end open zip