文章目录

  • 前言
  • 问题
  • 排除尝试
    • 前端
    • 后端
  • 小结

前言

在整理一套php代码的时候,需要添加文件上传功能,虽说我对php不算怎么熟悉,但是我想着一个简单的文件上传其实就form表单的提交能有多麻烦,谁知道遇到的问题颇为诡异,不过好在最后那么简单的问题解决了。

问题

在页面做了一个上传控件,用到了layui的文件上传,之后在Controller接收文件时发现,获取的文件为空。

html代码如下:

               <div class="col-md-6 column"><div class="form-group"><label for="describe">商品图片</label><div class="input-group"><input id='location' class="form-control" readonly=""><label class="input-group-btn"><input type="button" id="i-check" value="浏览文件" class="btn btn-primary" > <!-- οnclick="$('#i-file').click();" --></label></div></div></div>
 var img_index;layui.use('upload', function(){var $ = layui.jquery,upload = layui.upload;upload.render({elem: '#i-check',url: '/Instorage/upload',accept: 'images',ext: 'jpg|png|jpeg',acceptMime: 'image/*',number: 1,method: 'post'//,auto: false,before: function(obj) {img_index = layer.msg("图片上传中...",{time: 3000,});// obj.preview(function(index, file, result){//     console.log(file);//     $("#location").val(file.name);// });},done: function(res){//console.log(res);layer.close(img_index);if(res.code==1){$("#location").val(decodeURIComponent(res.message));}else{layer.msg("上传失败,请重新上传");}}});});

一个很简单的文件上传,没什么介绍的,但是,后端却是接收不到文件。

 public function upload(){// 获取表单上传文件  $file = request()->file('file'); //var_dump($file);//var_dump($_FILES);if(empty($file)) {  return AjaxReturn(0,'请选择上传文件');}  // 移动到框架应用根目录/public/uploads/ 目录下  $info = $file->move('./public/static/uploads/img/'); //如果不清楚文件上传的具体键名,可以直接打印$info来查看  //获取文件(文件名),$info->getFilename()  ***********不同之处,笔记笔记哦//获取文件(日期/文件名),$info->getSaveName()  **********不同之处,笔记笔记哦$filename = $info->getSaveName();  //在测试的时候也可以直接打印文件名称来查看 if($filename){              return AjaxReturn(1,'/public/static/uploads/img/' . $filename);}else{  // 上传失败获取错误信息  return AjaxReturn(0);}  }

排除尝试

前端
  • 查看文件是否上传
  • 查看js是否报错
  • 查看后端回调信息
后端
  • 查看request()->file()是否有文件 array(0)
  • 查看$_FILES是否有文件array(1)

问了问搞php的人这种情况,但是也是看完之后觉得没啥问题,我想着可能是layui这个在别的框架下会有问题(当然最后不是),我替换成formData的提交方式,发现问题一样。

又开始考虑是不是服务端配置的问题,比如文件格式的限制,大小的限制(后来确实是这个问题),不过因为不是搞php的,所以我也不太清楚,就只能通过能看到的东西来排除,突然看到了$_FILES的回调数据,发现了问题。

按照我常规的想法,error如果是大于零,应该是有错误了,就去查这个error对应的问题所在。

这里把对应的都列出来:

ErrorCode 错误描述
0 成功
1 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
2 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
3 文件只有部分被上传
4 没有文件被上传
6 找不到临时文件夹
7 文件写入失败

小结

问题不大,但是折腾了不少,做了这么多尝试最后是配置问题,这里也记录下,如果以后再遇到或者有相同问题的,可以参考,少折腾。

【问题记录】tp5文件上传$_FILES有值request中file却为空相关推荐

  1. Springboot 多文件上传

    其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...

  2. plupload+artdialog实现多平台文件上传

    背景:本来项目中使用的前端文件上传控件是uploadify,一切相安无事了一段时间后.现场传来"喜讯",客户要用ipad使用系统,还想上传图片.客户老爷一拍脑门,研发就要加班加点. ...

  3. html对定位图片的某一部分_某系统存任意文件上传

    文章来源:EDI安全 01 漏洞标题 某系统存任意文件上传 02 漏洞类型 文件上传 03 漏洞等级 中危 04 漏洞地址 http://xxx.xx.xx.xx:9090/Common/xxxxx/ ...

  4. Android 使用 okhttp3和retrofit2 进行单文件和多文件上传

    目录 前言 一.单文件上传 二.多文件上传 总结 前言 开发项目中需要进行单文件多文件的上传功能,下面演示的ApiResponse是自己分装的返回值,要根据自己的项目来完成.使用的mvvm框架,kot ...

  5. Android + https 实现 文件上传

    Android 应用中,如何使用https 实现 文件上传功能. package com.example.wbdream.zigvine;import android.annotation.Suppr ...

  6. 前端必学 - 大文件上传如何实现

    前端必学 - 大文件上传如何实现 写在前面 问题分析 开始操作 一.文件如何切片 二.得到原文件的hash值 三.文件上传 四.文件合并 技术点总结[重要] 一.上传文件? 二.显示进度 三.暂停上传 ...

  7. plupload实现多文件上传

    之前很早的项目,使用bootstrap+jsp,需要多文件上传,周末没事翻开记录一下,了解一下,可以查看https://blog.csdn.net/happy_wu/article/details/5 ...

  8. [RFC1867] HTML中基于表单的文件上传

    网络工作组:E. Nebel 征求意见:1867 L. Masinter 类别:试验 施乐公司 十一月 1995 HTML中基于表单的文件上传 这个备忘录的状态 这个备忘录为互联网社区定义了一个试验协 ...

  9. jquery的ajax提交文件上传

    以前的项目大多的使用jquery的插件来进行文件上传,对于就只引用jquery而不使用插件来上传文件之前未有写过,最近项目里有写到和用到,就记录一下,以后方便查找. 提示:存在浏览器皆容问题,谨慎使用 ...

最新文章

  1. C# Winform下载文件并显示进度条
  2. 区块链:定义未来金融与经济新格局
  3. TRUNCATE vs DELETE命令
  4. nmf算法 python_NMF算法简介及python实现
  5. 获取选中_【字节】如何实现选中复制的功能
  6. 数据结构基础(13) --链式栈的设计与实现
  7. php换行符sql,如何在PHP和MySQL的textarea中给换行符的同时避免SQL注入?
  8. 如何在IPv6下观看网络电视直播
  9. 洗头冲水时冲下好些头发,我是要秃了吗???
  10. EAAccessory iphone与经过苹果MFI授权认证的硬件通讯
  11. 量化交易奇才大卫·哈丁的投资之路
  12. k210安装ch210驱动(看着一篇就足够了)
  13. PostgreSQL开发规范
  14. 我们DevSkim、Jarvis和USG是这样子的
  15. LPC177x/8x勘误手册
  16. 逆流而上,YEX虚拟盘是莽夫还是勇者?
  17. Java文件/文件夹 加密解密工具(Swing版)
  18. 史上十大必玩的经典游戏
  19. VScode 代码特效
  20. 参加SAP培训是否有用?

热门文章

  1. MATLAB--DSP DAY2:butterworth滤波器
  2. python stmplib与email模块邮箱详解
  3. M7二极管和A7二极管(ASEMI)参数和实物对比
  4. Ansible跨play引用变量的注意事项
  5. C语言课程设计——家庭财务管理系统源码
  6. NVME-Express-1.4-2019.06.10 :第六章NVM Command Set 6.1 Namespaces
  7. 在线翻译软件:我为什么选择了memoQ?
  8. 校内体育场地预约管系统设计与实现
  9. [FAQ09065][Others]MTK发布的Android software Tools 工具包中所有工具的说明
  10. VEAZEN费森VZ200 VS雅马哈F310,你会怎么选择?初学者吉他推荐选购