[英]Laravel Create and Download Zipped File
我在创建和下载 Zip 文件时遇到问题
我在http://laravelcode.com/post/how-to-create-zip-file-in-laravel-using-ziparchive上看到此代码
这是我的控制器
public function download(){
$FOLDERID = $_GET['id'];
$FILEPATH = *My Database Query*
$PATHTOFILE = public_path().'/images/';
$ZIPNAME = 'ZIPFILENAME.zip';
$ZIP = new ZipArchive;
if ($ZIP->open($PATHTOFILE.'/'.$ZIPNAME, ZipArchive::CREATE) === TRUE) {
$FILES = *My Database Query to get file*
foreach ($FILES as $FILE) {
$ZIP->addFile($FILE->File_Path , $FILE->File_Name);
}
$ZIP->close();
}
else{
return "NO FILES CREATED";
}
我不知道这个是做什么的
$HEADERS = array(
'Content-Type' => 'application/octet-stream',
);
这是下载zip
if(file_exists($PATHTOFILE)){
return Response()->download($PATHTOFILE, $ZIPNAME, $HEADERS);
}else{
return "asd";
}
仍然不知道#HEADERS 做什么
我在创建 Zip 文件时遇到问题,错误总是出现在 $ZIP->close();
它说
ZipArchive::close(): 读取错误:错误的文件描述符
你们能帮我看看我做错了哪一个吗?
先感谢您!
创建路线
Route::get('download-zip', 'ZipController@downloadZip');
步骤:2 创建控制器为路由添加一个新方法。 downloadZip() 将生成新的 zip 文件并下载作为响应,所以让我们在下面添加:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use File;
use ZipArchive;
class ZipController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function downloadZip()
{
$zip = new ZipArchive;
$fileName = 'myNewFile.zip';
if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)
{
$files = File::files(public_path('myFiles'));
foreach ($files as $key => $value) {
$relativeNameInZipFile = basename($value);
$zip->addFile($value, $relativeNameInZipFile);
}
$zip->close();
}
return response()->download(public_path($fileName));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.