热门标签 | 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、都没有查询到问题。


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 如何在PHPcms网站中添加广告
    本文详细介绍了在PHPcms网站后台添加广告的方法,涵盖多种常见的广告形式,如百度广告和Google广告,并提供了相关设置的步骤。同时,文章还探讨了优化网站流量的SEO策略。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
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社区 版权所有