如何在laravel 5.2中为每个文件添加用户ID以供下载?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel 5.2中为每个文件添加用户ID以供下载?相关的知识,希望对你有一定的参考价值。

我有两个表''用户''和''公告'',哪个公告表有3个下载文件所以我想在用户下载文件时添加一个函数将用户ID添加到下载文件中?

公告表

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateAnnoucementsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('announcements', function (Blueprint $table) {
            $table->increments('project_id')->unsigned();;
            $table->integer('types_id')->unsigned();
            $table->foreign('types_id')->references('id')->on('types')->onDelete('CASCADE')->onUpdate('CASCADE');
            $table->string('project_name');
            $table->string('extension');
            $table->date('deadline');
            $table->string('biddingdocuments');
            $table->string('amendmentdocuments');
            $table->string('noticestenders');
            $table->timestamps();
        });

    }
/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::drop('announcements');
}
}


Users Table 
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('username')->unique();
            $table->string('email')->unique();
            $table->string('securityq');
            $table->string('securitya');
            $table->string('name');
            $table->string('fname');
            $table->string('lname');
            $table->string('gender');

            $table->string('cname');
            $table->integer('lnumber')->unique();
            $table->string('province');
            $table->string('city');
            $table->string('pnumber');

            $table->text('address');
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}
userAnnoucement controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

use App\Http\Requests;
use App\Announcements;



class UserAnnoucment extends Controller
{
     public function index(Request $request)
    {

         $announcements = Announcements::orderBy('project_id','DESC')->paginate(5);
        return view('userAnnoucements.index',compact('announcements'))->with('i',

($ request-> input('page',1) - 1)* 5); }

     /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */

     public function count(){
        $announcements = new Announcements;
          $announcements->extension = Auth::user()->id;
          $announcements->save();  
      return  $announcements;

     }



}
``
答案

如果网站不是太忙,没问题。否则,如果同时下载,则可能会发生冲突。

如果几乎没有流量,则以编程方式将下载文件复制到临时文件夹,将UserID添加到文件名中,然后从那里下载,即:1024_file.pdf。如果用户中断下载或返回,则文件已经存在,尽管您可能希望在每次下载后清除文件以节省磁盘空间,并且每次都使用相同的下载代码。

在更繁忙的服务上,为每个用户登录创建一个文件夹(如果尚未提供)并在这些文件夹中开展业务。

以上是关于如何在laravel 5.2中为每个文件添加用户ID以供下载?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中为每个用户生成唯一的自动增量值并将其添加到数据库中

Laravel 5.2 Entrust:如果他手动添加受限URL,则重定向用户

Laravel 5.2 - 每个域的 Homestead 相同站点加载

Laravel 5.2 基于用户的动态环境变量

如何在 laravel 查询生成器中为 sql 选择列添加别名?

如何在 laravel 中进行会话?