无法upload exe、dll等类型的文件。其他txt、pdf、lib等文件都可以upload。

1. 运行环境

1). 当前使用的 Laravel 版本?

10.5.1
//: <> (使用 php artisan --version 命令查看)

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.2.0

php-fpm 版本:

3). 当前系统

Windows 10
//: <> (期待数值 Windows 10 / Ubuntu 20.4 / CentOS 8 )

4). 业务环境

开发环境
//: <> (期待信息 开发环境生产环境)
//: <> (是否使用负载均衡?请提供相关信息)

5). 相关软件版本

MySQL: 10.4.27
//: <> (提供相关软件的版本,如 Nginx 、MySQL、MongoDB 等)

2. 问题描述?

  • 利用如下代码获取upload文件

    <span class="col2"><input type="file" name="upfile"></span>
  • 提交

    document.board.submit();
  • 在web.php利用如下代码获取文件实例并移动到指定位置和指定文件名。

    Route::post('/insert', function (Request  $request) {
    $token = csrf_token();
    
    // Get the uploaded file from the request
    $file = $request->file('upfile');
    //dd($file); //如果文件是exe,dll等类型,会显示文件位于D:\xampp\tmp\php64B7.tmp,但实际上没有这个文件
    
    // Store the file in the "uploads" directory
    $path = $file->storeAs('uploads', date("Y_m_d_H_i_s").".".$file->extension());
    dd($path); //如果文件是exe,dll等类型,会显示false。txt,pdf,lib等类型文件会显示正常路径。
    
    return  view('insert', ["file"=>$file]);
    });

3. 您期望得到的结果?

上传exe, dll等文件的时候,$path也是正常路径,也就是说文件上传和转移成功。
//: <> (能截图就截图。)

4. 您实际得到的结果?

上传exe, dll等文件的时候,$path是false,也就是说文件上传和转移失败。
//: <> (有报错信息的话把堆栈信息提供出来)

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 1

这是我的上传文件代码,exe和dll文件是可以正常上传的

public function upload(Request $request)
{
    $file = $request->file('file');
    // 判断是否上传成功
    if (!$file->isValid()) {
        return ['status' => 0, 'message' => '文件上传失败'];
    }
    $file_Id = md5_file($file);
    $client_file_name = $file->getClientOriginalName();//获取用户设置的文件名称
    // 获取文件扩展名
    $mimeType = $file->getMimeType();
    $fileSize = filesize($file);
    $ext = strtolower($file->getClientOriginalExtension());    #转小写
    $path = '/uploads/api/' . date('Y_m_d');
    $this->setFilePath(storage_path() . $path);
    $fileName = $file_Id . '_' . $client_file_name;
    $data = [
        'file_id' => $file_Id,
        'mime_type' => $mimeType,
        'size' => $fileSize,
        'file_name' => $fileName,
        'client_file_name' => $client_file_name,
        'file_path' => $path . '/' . $fileName,
        'ext' => $ext,
    ];
    // 上传文件并判断
    if ($file->move(storage_path() . $path, $fileName)) {
        return ['data' => $data, 'message' => 'success'];
    } else {
        return ['data' => $data, 'message' => 'error'];
    }
}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!