php-laravel-文件上传(批量)下载

php-laravel-文件上传(批量)下载-2020-3-6

功能:文件单个上传,文件单个和批量下载,单删数据库,批量删除数据库。包括删除文件。

下载文件:

https://www.lanzous.com/ia04wcd

路由

//上传
Route::any('shangchuan','up\UploadController@upload');
Route::any('shangchuan/uploadwenjian','up\UploadController@uploadwenjian');
//管理(下载-删除)
Route::resource('shangchuanset','up\SetController');
Route::any('del','up\DelController@del');
Route::any('xiazai','up\DownloadController@index');

UploadController.php

<?php

namespace App\Http\Controllers\up;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;

class UploadController extends Controller
{
   public function upload(){
      return view("up.shangchuan");

    
   }
 

  public function uploadwenjian(Request $request){
      
      if($request->hasFile('file')&&$request->file('file')->isValid()){
          $file=$request->file('file');
          $name=$request->title;
          $allowed_extensions = ["png", "jpg","txt","doc"];
          if (!in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
              dd('不符合格式.');
          }else{
              $destinationPath = 'storage/uploads/'; //public 文件夹下面建 storage/uploads 文件夹
              $extension = $file->getClientOriginalExtension();
              //$fileName=md5(time().rand(1,1000)).'.'.$extension;
              $fileName=$name.'.'.$extension;
              $file->move($destinationPath,$fileName);
              $filePath = asset($destinationPath.$fileName);
              DB::table('wenjian')->insert([
                'id' => null,
                'fileName' => $name,
                'type'=>$extension,
                 ]); 
//wenjian是数据表,id,fileName,type字段        
              dd('成功'); 
          }
      }else{
          dd('图片上传失败请重试.');
      }
  }

  
}

shangchuan.blade.php


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
  <br>
            <br>
            <br>
            <br>
     <div class="row">
       <div class="col-md-10">
		   <form class="form-horizontal 8" role="form" action="/shangchuan/uploadwenjian" method="post" name="article" enctype="multipart/form-data">
			<div class="form-group">
			<h1>文件上传</h1>
				<label for="title" class="col-md-2 control-label">姓名</label>
				<div class="col-md-8">
					<input type="text" class="form-control" id="title" name="title" placeholder="请输入姓名">
					{{csrf_field()}}
				</div>
			</div>
			<div class="form-group">
				<label for="file" class="col-md-2 control-label">文件</label>
				<div class="col-md-8">
                <text>请上传png, jpg,txt,doc格式</text>
					<input type="file" class="form-control" id="file" name="file" />
				</div>
			</div>
			<div class="form-group">
				<div class="col-md-offset-2 col-md-10">
					<button type="submit" class="btn btn-default">上传</button>
					<button type="reset" class="btn btn-default">取消</button>
				</div>
			</div>
       </form>
       </div>
     </div>
   </div>
</body>
</html>


SetController.php

<?php

namespace App\Http\Controllers\up;
use DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
class SetController extends Controller
{
   public function index(Request $request){
   	$data=\DB::select("select * from  wenjian ");
    return view("up.set")->with('data',$data);
    //echo "123";
   }
   public function destroy(Request $request){
    // 获取删除ID
     $id=$request->input('id');
     // 查询文件 
    $data=\DB::select("select * from wenjian where id=$id");
    //wenjian是数据表
    // 删除操作
    // 删除成功 返回值1
    // 删除失败 返回值0
    if (\DB::delete("delete from wenjian where id=$id")) {
      # code...
     // 删除成功 删除图片
     return "1";
     }else{
      return "0";
    }

  }
 
  
}

set.blade.php

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文件管理</title>
    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>

<body>
   <h1>文件管理</h1>


<table>

   总数:
    
共有{{count($data)}}<hr>
<button class="pl">批量删除</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button class="plx">批量下载</button>
<hr>
<th><input type="checkbox" id="checkall" onclick="checkall()"/></th>
<th>ID</th>
<th>FILENAME</th>
<th>TYPE</th>
<th>操作</th>

@foreach($data as $value)
<tr>
<td><input type="checkbox"  name="checkid" value="{{ $value->id }}"></td>
<td>{{$value->id}}</td>
<td>{{$value->fileName}}</td>
<td>{{$value->type}}</td>

<td>&nbsp;&nbsp;&nbsp;
<a href="javascript:;" onclick="xia(this,{{$value->id}})">下载</a>
<a href="javascript:;" onclick="del(this,{{$value->id}})">删除</a></td>
</tr>
@endforeach
</table>

<script>
// 全选
function checkall(){

$("[name='checkid']").prop("checked",$("#checkall").prop("checked"));

}
</script>
<script>
    //批量删除
    $(".pl").click(function(){
        var  box = $("input[name='checkid']");
        length =box.length;
        //alert(length);
        var str ="";
        for(var i=0;i<length;i++){
            if(box[i].checked==true){
                str =str+","+box[i].value;
            }
        }
        str= str.substr(1)
        //alert(str)
        location.href="del?id="+str;
    })
      //批量下载
      $(".plx").click(function(){
        var  box = $("input[name='checkid']");
        length =box.length;
        //alert(length);
        var str ="";
        for(var i=0;i<length;i++){
            if(box[i].checked==true){
               window.open('/xiazai?id='+box[i].value);
             
            }
        }
      
    })
</script>


<script>
function del(obj,id){
$.post('/shangchuanset/'+id,{'id':id,'_method':'delete','_token':'{{ csrf_token() }}'},

	function(data)
	{
      location.reload([true]) 
	});
}
function xia(obj,id){
$.post('/xiazai/'+id,{'id':id,'_method':'get','_token':'{{ csrf_token() }}'},
window.open('/xiazai?id='+id),
	function(data)
	{
       
	});
}
</script>

</body>

</html>

DownloadController.php

<?php

namespace App\Http\Controllers\up;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Support\Facades\Storage;


class DownloadController extends Controller
{
    public function index(Request $request){
        $id = $request->input('id');
        $data=DB::table("wenjian")->where("id",$id)->first();
        $fileName = $data->fileName;
        $type = $data->type;
        $data = 'storage/uploads/'.$fileName.'.'.$type;
        return response()->download($data);


    }
 
 

  
}

DelController.php

<?php

namespace App\Http\Controllers\up;
use DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
class DelController extends Controller
{
  
  public function  del(Request $request){
   // $id = input::get('id');
    $id = $request->input('id');
    $str = explode(",",$id);
    foreach($str as $value){
        DB::table('wenjian')->where('id',"=","$value")->delete();
    }
    return  "成功";
}

}

发布了91 篇原创文章 · 获赞 101 · 访问量 3311

猜你喜欢

转载自blog.csdn.net/weixin_41096569/article/details/104703429