无法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,也就是说文件上传和转移失败。
//: <> (有报错信息的话把堆栈信息提供出来)

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

被服务器安全软件移除了吧

1年前 评论

我是在本地运行的。也就是通过比如 localhost:8000/form 打开界面的。我关闭了windows的实时保护,结果还是一样。 可是我把类似的代码复制到 xampp/htdocs 之后运行xampp的Apache和MySQL,然后通过localhost打开页面进行上传,这样的话上传exe, dll都没有问题。 是不是Laravel本身有屏蔽这类文件的功能?

1年前 评论

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