【问题标题】:Laravel Create and Download Zipped FileLaravel 创建和下载压缩文件
【发布时间】:2017-11-20 08:41:21
【问题描述】:

我在创建和下载 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',
        );

这个是用来下载压缩包的

    if(file_exists($PATHTOFILE)){

    return Response()->download($PATHTOFILE, $ZIPNAME, $HEADERS);

    }else{

        return "asd";

    } 

仍然不知道#HEADERS 是做什么的

我在创建 Zip 文件时遇到问题,错误总是在 $ZIP->close();

它说

ZipArchive::close():读取错误:文件描述符错误

你们能帮我看看我做错了什么吗?

提前谢谢你!

【问题讨论】:

  • 错误是什么
  • ZipArchive::close(): Read error: Bad file descriptor sorry I didn't attach it
  • 检查同名文件是否位于您创建文件的文件夹中。实际上你必须上传其他文件夹。
  • 没有创建文件
  • 请查看此链接,通过它制作zip文件非常容易。hdtuto.com/article/…

标签: php laravel-5


【解决方案1】:

创建路线

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));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2019-07-18
    • 2013-08-29
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多