热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Thinkphp多文件上传

Thinkphp手册中对于多文件上传描述的很清楚:如果需要使用多个文件,只需要修改表单

Thinkphp手册中对于多文件上传描述的很清楚:如果需要使用多个文件,只需要修改表单,把

改为

    	

或者

    							

这样就可以多文件上传了,确实没错,但是有个问题,每个上传表单域对应一个数据库字段。当然,上传成功的文件是需要保存数据库的。而手册上的这种写法就不行了,上传方法是在model里面写的,用的自动完成。但是表单域的name都是一个名字,这样上传的时候三个表单域都进了一个自动完成方法,只返回一个值。所以我想到了一个方法,但是总感觉官方会有更好的方法解决这个问题。搜索引擎搜遍了,没有我想要的效果。只能自己写了。

暂且自己的上传表单域为两个,一个上传图片,一个上传视频。字段名为image、video。

html代码如下

										
  1. 图片:
  2.  
  3. 视频:

model代码:

														
  1. protected $info= '';
  2.  
  3. protected $_auto = array(
  4. array('image','upload',3,callback),//自动完成方法
  5. array('video','videoupload',3,callback), //自动完成方法
  6. );//自动填充上传图片生成缩略图
  7. protected function upload(){
  8. $var = $_FILES['image']['name'];
  9. import('ORG.Net.UploadFile');
  10. $upload = new UploadFile();
  11. $upload->saveRule  = time;
  12. $upload->allowExts  = array('jpg', 'gif', 'png', 'zip','flv');
  13. $upload->thumb = true;
  14. //视频路径。。。只支持flv后缀,
  15. $upload->videopath = './Public/upload/Video/';
  16. $upload->savePath =  './Public/upload/images/';
  17. $upload->thumbPrefix = '250_115_,150_110_,213_156_';
  18. $upload->thumbMaxWidth='250,150,213';
  19. $upload->thumbMaxHeight='115,110,156';
  20. if(!in_array('',$var) || !in_array('',$_FILES['video']['name'])){
  21. if(!$upload->upload()) {
  22. echo $upload->getErrorMsg();die;
  23. }else{
  24. $this->info =  $upload->getUploadFileInfo();
  25. if(!in_array('',$var) && !in_array('',$_FILES['video']['name'])){
  26. return $this->info[1]['savename'];
  27. }elseif(!in_array('',$var)){
  28. return $this->info[0]['savename'];
  29. }else{
  30. return false;
  31. }
  32.  
  33. }
  34. }else{
  35. return flase;
  36. }
  37. }
  38. //上传视频
  39. protected function videoupload(){
  40. if(!in_array('',$var) && !in_array('',$_FILES['video']['name'])){
  41. return $this->info[0]['savename'];
  42. }elseif(!in_array('',$_FILES['video']['name'])){
  43. return $this->info[1]['savename'];
  44. }else{
  45. return false;
  46. }
  47.  
  48. }

自始至终感觉能有非常简便的解决方法,但是摸不着其要领。这也算是一个勉强的解决方案。如果有人遇到过这个问题,欢迎与松林交流。松林渴望简单的解决这个问题。百度、google、bing、都没有查询到问题。


推荐阅读
  • 本文由杨勇和思远于2012年12月27日撰写,主要探讨了如何使用PHP进行网页内容抓取,特别是针对字符较多的网站。文章详细介绍了正则表达式失效的原因,并提供了优化方法,同时展示了如何抓取淘宝服饰栏、天气信息以及IP地址对应的地理位置。 ... [详细]
  • 在跨浏览器开发中,一个常见的问题是关于如何在鼠标悬停时显示图片提示信息。本文深入探讨了 IE 浏览器对 IMG 元素 alt 属性的特殊处理,并提供了最佳实践建议。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文旨在提供一套高效的面试方法,帮助企业在短时间内找到合适的产品经理。虽然观点较为直接,但其方法已被实践证明有效,尤其适用于初创公司和新项目的需求。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 在尝试更新Microsoft Edge浏览器时遇到“检查更新时出错:无法连接到Internet”的问题。本文将详细介绍可能的原因及解决方案,包括防火墙设置和证书缺失的处理方法。 ... [详细]
  • 本文探讨了如何利用jQuery在客户端实现页面跳转,并详细介绍了如何确保页面在浏览器的顶层窗口中打开,而不是局限于当前框架内。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
author-avatar
php.com
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有