首页 > 解决方案 > 如何在 laravel 6 中下载文件

问题描述

我想问一下如何在 laravel 6 中使用重命名文件将我的文件下载到公共目录中?我应该在download()方法和刀片上做什么?

我只想下载与id(自动增量)相同的保存文件。

谢谢你。

这里route/web.php

    Route::middleware('role:purchasing|admin')->group(function(){
        Route::resource('purchasing', Laporan\PurchasingController::class);
        Route::get('purchasing/delete/{id}', ['as' => 'purchasing.delete', 'uses' => 'PurchasingController@delete']);
        Route::get('purchasing/{id}/download', 'PurchasingController@download')->name('purchasing.download');
    });

这是我的控制器:

<?php

namespace App\Http\Controllers\Laporan;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\Purchasing;
use App\User;
use RealRashid\SweetAlert\Facades\Alert;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;

class PurchasingController extends Controller
{
// .. another codes ..

    public function store(Request $request)
    {
        // ..using validate here ..

        $file = $request->file('file');
        $namaFile = time() . "_Purchasing_" . $file->getClientOriginalName();
        $path = 'storage/laporan/purchasing';
        $file->move($path, $namaFile);

        $data = new Purchasing([
            'staff'     => Auth::user()->name,
            'divisi'    => Auth::user()->role,
            'tanggal'   => $request->get('tanggal'),
            'title'     => $request->get('title'),
            'desc'      => $request->get('desc'),
            'file'      => $namaFile,
            'status'    => $request->get('status')
        ]);
        $data->save();
        Alert::success('Sukses', 'Laporan berhasil ditambahkan!');
        return redirect('/purchasing');
    }

    public function download($id)
    {
        // what should i do here ??
    }
}

标签: phplaravel

解决方案


您必须查看$path变​​量中的目录

存储/laporan/采购

在此目录中,您将通过变量的名称找到文件$namaFile

在下载函数中,从数据库中获取文件名并链接到目录。

$purchasing_file = Purchasing::find($id)->namaFile;
$link_to_download = storage_path('laporan/purchasing').$purchasing_file;

希望我回答了你的问题,谢谢。


推荐阅读