最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vuejs+element-ui+laravel5.4上傳文件的示例代碼

 更新時間:2017年08月12日 16:54:54   作者:羊爸爸  
本篇文章主要介紹了vuejs+element-ui+laravel5.4上傳文件的示例代碼,具有一定的參考價值,有興趣的可以了解一下

前言

之前的文章講得太多安裝了,今天就不說這個了,因為我的項目是前后端分離的,所以基本是分開執(zhí)行代碼邏輯。其中還有跨域問題,主要還是在laravel中添加頭信息放行之類的,這里會提一下做法。

element-ui的upload組件

我的vue代碼:

<template>
  <el-upload
      :action="uploadAction"
      list-type="picture-card"
      :on-remove="handleRemove"
      :on-success="handleSuccess"
      :before-upload="handleBefore"
      :file-list="files">
    <i class="el-icon-plus"></i>
  </el-upload>
  <el-dialog v-model="dialogVisible" size="tiny">
    <img width="100%" :src="dialogImageUrl" alt="">
  </el-dialog>
</template>

這里說一下 on-preview與on-success都可以拿到服務器的返回路徑

其中:action="uploadAction"是服務器接引地址, list-type為限制上傳格式

而:on-remove="handleRemove"為移除圖片時對應的方法,:before-upload="handleBefore"

為上傳前的操作,這里我用于限制上傳的數量限制, :file-list="files"上傳后數據綁定在這里

這里我是使用:on-success="handleSuccess"來拿服務器的返回數據的

export default {
  data(){
    return {
      files: [],
      uploadAction:'http://服務器地址'
    }
  },
  methods: {
    handleSuccess(response){
      console.log(response)
      this.files = [{name: response.name, url: imgBaseUrl + response.photo}]
    },
    handleBefore(){
      return this.files.length === 1 ? false : true // 只讓它上傳一張
    },
    handleRemove(file, fileList) {
       console.log(file, fileList)
    }
  }
}

laravel跨域

laravel跨域需要添加一個中間件

在app/Http/middleware下 新建文件Cors.php,輸入

namespace App\Http\Middleware;

use Closure;

class Cors
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
    header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
    return $next($request);
  }
}

在appHttpKernel.php

添加

 protected $routeMiddleware = [
    // some class
    'cors' => \App\Http\Middleware\Cors::class,
  ];

laravel 路由

調用中間件來限制路由,這里用了dingo api,如不清楚請看前面的文章

$api->version('v1', ['middleware' => 'cors'], function (Router $api) {
  $api->post('upfile', 'App\\Api\\V1\\Controllers\\Upload\\UploadFiles@upfile');
}

配置Store

打開config/filesystems.php 找到 disks

'disks' => [

  // 上面還有很多,下面是自己加的
  // 新建一個本地端uploads空間(目錄) 用于存儲上傳的文件
    'uploads' => [

      'driver' => 'local',

      // 文件將上傳到storage/app/uploads目錄
      'root' => storage_path('app/uploads'),

      // 文件將上傳到public/uploads目錄 如果需要瀏覽器直接訪問 請設置成這個
      //'root' => public_path('uploads'),
    ],
] 

開始上傳

新建一個上傳Controller, 下面很多判斷沒有做,自行做吧

AppApiV1ControllersUploadUploadFiles.php

namespace App\Api\V1\Controllers\Upload;


use Dingo\Api\Http\Request;
use Dingo\Api\Exception\StoreResourceFailedException;
use Storage;

class UploadFiles
{
  public function upfile(Request $request) {
    if (!$request->hasFile('file')) {
      return response()->json([], 500, '無法獲取上傳文件');
    }
    $file = $request->file('file');

    if ($file->isValid()) {
      // 獲取文件相關信息
      $originalName = $file->getClientOriginalName(); // 文件原名
      $ext = $file->getClientOriginalExtension();   // 擴展名
      $realPath = $file->getRealPath();  //臨時文件的絕對路徑
      $type = $file->getClientMimeType();   // image/jpeg

      // 上傳文件
      $filename = date('Ymd/His');
      // 使用我們新建的uploads本地存儲空間(目錄)
      $path = $file->store($filename, 'uploads');
      return response()->json([
        'status_code' => 200,
        'message' => 'success',
        'photo' => $path,
        'name' => $originalName,
      ]);

    } else {
      return response()->json([], 500, '文件未通過驗證');
    }
  }
}

到此,已經可以放上全部要用到的代碼了,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Vue仿今日頭條實例詳解

    Vue仿今日頭條實例詳解

    這篇文章主要介紹了Vue仿今日頭條實例詳解,并把相關代碼做了說明,對此有興趣的朋友參考下吧。
    2018-02-02
  • el-tab設置默認激活的標簽頁實現步驟

    el-tab設置默認激活的標簽頁實現步驟

    這篇文章主要給大家介紹了關于el-tab設置默認激活的標簽頁實現步驟,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vue webpack build資源相對路徑的問題及解決方法

    vue webpack build資源相對路徑的問題及解決方法

    這篇文章主要介紹了vue webpack build資源相對路徑的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • vue頁面渲染數組中數據文案后添加逗號最后不加

    vue頁面渲染數組中數據文案后添加逗號最后不加

    這篇文章主要為大家介紹了vue頁面渲染數組中數據文案后添加逗號最后不加逗號示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Vue前端如何實現與后端進行數據交互

    Vue前端如何實現與后端進行數據交互

    這篇文章主要介紹了Vue前端如何實現與后端進行數據交互,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue實現權限控制路由(vue-router 動態(tài)添加路由)

    vue實現權限控制路由(vue-router 動態(tài)添加路由)

    今天小編就為大家分享一篇vue實現權限控制路由(vue-router 動態(tài)添加路由),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vuex數據狀態(tài)持久化問題

    vuex數據狀態(tài)持久化問題

    這篇文章主要介紹了vuex數據狀態(tài)持久化問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 詳解vuejs2.0 select 動態(tài)綁定下拉框支持多選

    詳解vuejs2.0 select 動態(tài)綁定下拉框支持多選

    這篇文章主要介紹了vuejs2.0 select動態(tài)綁定下拉框 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue突然報錯doesn‘t?work?properly?without?JavaScript?enabled的解決方法

    Vue突然報錯doesn‘t?work?properly?without?JavaScript?enabled

    最近在做項目的時候遇到了些問題,所以這篇文章主要給大家介紹了關于Vue突然報錯doesn‘t?work?properly?without?JavaScript?enabled的解決方法,需要的朋友可以參考下
    2023-01-01
  • 使用@tap.stop阻止事件繼續(xù)傳播

    使用@tap.stop阻止事件繼續(xù)傳播

    這篇文章主要介紹了使用@tap.stop阻止事件繼續(xù)傳播,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

眉山市| 宕昌县| 资中县| 和静县| 彭州市| 乐山市| 宜兰市| 仙居县| 福建省| 平阳县| 遂川县| 湘乡市| 平阳县| 宜川县| 罗源县| 金沙县| 宁陵县| 东港市| 繁昌县| 民勤县| 北海市| 贵定县| 襄垣县| 鹿邑县| 工布江达县| 辽中县| 新源县| 普宁市| 彩票| 徐州市| 寿光市| 平安县| 新兴县| 龙州县| 高清| 达拉特旗| 旬邑县| 深水埗区| 南靖县| 常宁市| 宁津县|