IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 解决laravel 文件上传xlsx/xls某些时候不兼容 -> 正文阅读

[PHP知识库]解决laravel 文件上传xlsx/xls某些时候不兼容

一、解决办法:

使用laravel内置的文件上传验证Request。

有时候,上传EXCEL时,虽然MIMES类型已经增加,但是验证就不通过,最后在mimes类型里增加了bin类型才解决。

1、最终验证Code:

<?php


namespace Modules\Finance\Http\Requests\MerchantsSettlement;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use App\Exceptions\APIHttpException;


class AttachmentRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            /*上传文件*/
            'file' => 'bail|required|file|min:1|max:102400|mimes:png,jpg,gif,jpeg,pdf,zip,rar,doc,docx,bin,xls,xlsx,ppt,pptx',
            'merchant_id'    => 'bail|required|numeric',
            'period' => 'bail|required',
        ];
    }
    public function messages()
    {
        return [
            'required'  => ':attribute不能为空',
            'numeric'   => ':attribute必须是数字',
            'file'   => ':attribute必须是文件',
            'mimes' => '文件格式不合法~',
            'max' => '文件大小超出100M限制~',
        ];
    }
    public function attributes()
    {
         return [
               'file'    => '上传',
               'merchant_id'    => '商户ID',
               'period'    => '结算期间',
        ];
    }
    public function failedValidation(Validator $validator)
    {
        throw new APIHttpException($validator->errors()->first());
    }

}

二、问题定位:

1、查看laravel版本

?2、在项目根目录调试该文件

vim vendor/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php

    /**
     * Validate the guessed extension of a file upload is in a set of file extensions.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @param  array  $parameters
     * @return bool
     */
    public function validateMimes($attribute, $value, $parameters)
    {
        if (! $this->isValidFileInstance($value)) {
            return false;
        }

        if ($this->shouldBlockPhpUpload($value, $parameters)) {
            return false;
        }

        return $value->getPath() !== '' && in_array($value->guessExtension(), $parameters);
    }

大概在1188行,具体可以,在该方法里使用echo、var_dump()方法进行定位和调试即可。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:49:47  更:2021-08-19 11:49:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 12:29:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码