cakephp: 文件上传

delphi之多线程编程(一) <br />本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅。所有代码均亲自测试 delphi7下测试有效。图片均为自己制作。<br /><br />多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以仅仅是看上去会一些,明白了2+2的时候,其实我还不知道1+1。<br /><br />开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解.<br />先试试这个:<br /> <br />procedure TForm1.Button1Click(Sen 阅读详情

    原文: http://cakebaker.42dh.com/2006/04/15/file-upload-with-cakephp/

    文章中代码经过测试: 需要代码请联系 

    这篇文章我将讲述如何上传以及在数据库中存储文件,是的,我说的是在数据库中存储文件.由于数据库性能的
原因不推荐在数据库中保存文件.当然这是在设计应用程序是考虑的重点.
为什么要把文件存储在数据库中有下面几个原因:

1. 所有文件存储在一个地方: 数据库
2. 易于测试
3. 易于开发,因为我不必维护数据库和文件系统的同步问题

 

收先定义MYSQL数据库表的结构

非常容易,是吗? 现在我将在数据库中存储文件.为了检索文件,我需要一个download()方法,把它添加到控制器中:     
显示文件列表
控制器方法:     

/* *
     * 文件下载
     * 
     * @param integer $id 文件id
     * 
     * Usage: uploads/download/1
     
*/
    
function  download( $id ) {
        
//  通过文件Id查询文件的数据
        
        
$file   =   $this -> Upload -> findById( $id );
        
header ( ' Content-type:  '   .   $file [ ' Upload ' ][ ' type ' ]);  //  MIME类型
         header ( ' Content-length:  '   .   $file [ ' Upload ' ][ ' size ' ]);   //  文件长度(字节)
         header ( ' Content-Disposition: attachment; filename= '   .   $file [ ' Upload ' ][ ' name ' ]);  //  提示用户保存文件
         echo   $file [ ' Upload ' ][ ' data ' ];
        
exit  ();
    }

 

// app/views/uploads/filelist.ctp

< table >
<? php 
echo $html->tableHeaders(array_keys($filelist[0]['Upload']));
foreach ($filelist as $file){
 echo $html->tableCells($file['Upload'], array('bgcolor' => 'green','style'=>'color:white;'));
}
?>
</ table >

 

/* *
     * 显示文件列表
     * 
     * Usage: uplodas/filelist
     
*/
    
function  filelist() {
        
$this -> set( ' filelist ' ,   $this -> Upload -> findAll( null ,   array  (
            
' id ' ,
            
' name ' ,
            
' type ' ,
            
' size ' ,
            
' created ' ,
            
' updated ' , ' modified '
        )
,   ' id DESC ' ));
    }

 

CREATE   TABLE  uploads (
  id 
INT ( 11 )  NOT   NULL  AUTO_INCREMENT,
  name 
VARCHAR ( 75 )  NOT   NULL ,
  type 
VARCHAR ( 255 )  NOT   NULL ,
  size 
INT ( 11 )  NOT   NULL ,
  data MEDIUMBLOB 
NOT   NULL ,
  created 
DATETIME ,
  updated 
DATETIME ,
  modified 
DATETIME ,
  
PRIMARY   KEY  (id)
);


注意: 除非你明确的知道上传的文件不会超过64K大小,否则应该使用MEDIUMBLOG或则LONGBLOB数据库类型.


模型是很直观的:

//  app/models/uploads.php
class  Upload  extends  AppModel
{
    
public   $name   =   ' Upload ' ;
 }

目前我省略了控制器的创建而直接创建视图

// app/views/uploads/add.ctp
< form  action ="/uploads/add"  enctype ="multipart/form-data"  method ="post" >
    
<? php echo $form->file('uploads/File');  ?>
    
<? php echo $html->submit('Upload'));  ?>
</ form >

现在我准备创建控制器并实现add方法

//  app/controllers/files_controller.php
class  UploadsController  extends  AppController{
    
/* *
     * 上传文件
     * 
     * Usage: uploads/add
     
*/
    
function  add() {
        
if  ( ! empty  ( $this -> data[ ' uploads ' ][ ' File ' ])  &&   is_uploaded_file ( $this -> data[ ' uploads ' ][ ' File ' ][ ' tmp_name ' ])) {
            
//  把文件存入变量
             $this -> data[ ' uploads ' ][ ' File ' ][ ' data ' ]  =   fread ( fopen ( $this -> data[ ' uploads ' ][ ' File ' ][ ' tmp_name ' ] ,   " r " ) ,   $this -> data[ ' uploads ' ][ ' File ' ][ ' size ' ]);
            
//  同步数据库
             $this -> Upload -> save( $this -> data[ ' uploads ' ][ ' File ' ]);
        }
        
//  debug
         var_dump ( $this -> data[ ' uploads ' ][ ' File ' ]);
    }
}
cakephp-uploader:CakePHP 的上传器行为 CakePHP 2.x 的上传器行为 在基于 Cake 模型的表单中上传文件的简单方法 用法: 在您的模型中加载上传器行为: var $actsAs => array('Uploader' => array( 'files' => array( 'img' => array('src' => 'youpathrelativetowebroot/image_:id.jpg') ) )); 当你找到一些数据时,新的 img/file 虚拟字段就会出现在我们的结果中: $entry = $this->YourModel->find('all'); pr($entry); @卢卡斯费雷拉 立即下载

相关推荐

利用 Docker Distribution 搭建私有的 Docker Registry

1、拓扑

weixin_44983653的博客 1067

CakePHP中获取Request请求数据的几种方式

在不同的使用场景下,获取Cake\Http\ServerRequest请求数据的几种不同方式。

般若 2975

多智能体系统在AI物流优化中的实际应用案例

订单波峰波谷难应对(如双11订单量暴增300%);动态干扰难处理(如突发交通拥堵、客户临时改地址);全局优化难实现(单辆车最优≠整体最优)。本文聚焦“多智能体系统(MAS)”这一AI技术,讲解其如何通过“群体智能”破解物流调度难题,并结合实际案例展示落地效果。本文从“生活故事→核心概念→技术原理→实战案例→未来趋势”逐步展开,用“快递员团队协作送外卖”类比MAS运作,结合Python代码模拟任务分配,最后通过某物流企业的真实项目验证效果。

AIGC应用创新大全的博客 1630

cakephp工作笔记19 -- 图片上传篇

[url]http://labs.iamkoa.net/2007/10/23/image-upload-component-cakephp/[/url] [url]http://www.jamesfairhurst.co.uk/posts/view/uploading_files_and_images_with_cakephp[/url] [url]http://bakery.cakephp....

icrwen的专栏 234

2.0 电子凸轮 西门子1500电子凸轮使用研究1

本文研究了S7-1500T电子凸轮同步控制技术,通过仿真实验得出以下结论:1)通过比例系数可调整凸轮曲线形状;2)解除同步需调用从轴其他运动指令;3)详细阐述了凸轮同步的5个实施步骤。重点分析了三种同步类型(主值距离同步、动态参数同步和直接同步)的特点及应用场景,并探讨了缩放系数、偏移量等参数对凸轮曲线的影响。同时介绍了凸轮应用模式及常见异常处理方法,为工程应用提供了重要参考。

qq_34047402的博客 809

【PointNet++】使用Open3D对分割后的结果可视化

PointNet++中的局部分割网络预测后是没有可视化文件的,所以需要自己通过编写Open3D或者PCL点云算法去可视化,在本人经过查找翻阅修改后,实现了网络输出点云分割后结果的可视化。已实现推测单个点云,并可视化。

纵马踏花向自由 2453

cakephp2 MeioUpload 图片上传简单应用

cakephp2之前 图片的上传用MeioUpload Behavior   之后cakephp2.x使用 upload plugin 实现,该链接https://github.com/josegonzalez/upload就其应用作了详细说明;本人就其简单应用做介绍;    在制作网站时,想让图片上传管理成单独模块,而不是upload plugin上举例的附加在其他控制器之上,所以建立了单

lap2004的专栏 1536

Unreal从入门到精通之 UE4 vs UE5 VR性能优化实战

这篇文章分享了UE5 VR项目的性能优化经验。作者通过对比UE4和UE5的VR模板性能,发现UE5默认帧率只有45FPS,远低于UE4的100FPS。主要性能瓶颈来自Lumen全局光照、虚拟阴影贴图等新特性。文章详细列出了12项关键优化设置,包括禁用Lumen、关闭虚拟阴影、使用前向渲染等,并分析了各项调整对性能的影响程度。特别指出删除默认的VolumetricCloud可立即提升5帧。最后建议根据场景需求平衡画质与性能,对于高帧率要求的VR项目,可能需要谨慎使用UE5或关闭其部分高级渲染功能。

TxNet 1380

如何在CakePHP中使用Ajax请求

在CakePHP的默认情况下,Controller中的action都要求有一个对应的view视图。而处理Ajax请求的action则不需要视图,本文介绍了在CakePHP中处理Ajax请求的常用方式。

般若 2368

融合双主干网络提升YOLOv8性能一种基于SOTA思想的目标检测改进

YOLOv8采用了单一的主干网络进行特征提取,通常是基于CSPDarknet作为骨干网络,在目标检测过程中通过不同的卷积层提取不同尺度的信息。虽然这种设计在大多数应用场景下表现出色,但在面对复杂背景、细节丰富的物体或小物体检测时,YOLOv8有时难以保持良好的精度。在本文中,我们提出了一种基于双主干网络的YOLOv8改进方案,通过结合先进的SOTA思想,全面提升了YOLOv8在目标检测任务中的表现。双主干网络架构。

博客 1153

《备考系统分析师》 - 专栏介绍和目录

本专栏提供软考高级系统分析师全套备考资料,包含四大核心内容:1.详细考点梳理(覆盖基础知识、关键技术、案例实践三大模块16个章节);2.历年真题及解析(2009-2022年所有真题含综合知识、案例分析和论文);3.100+篇高质量论文范文;4.预测模拟题。早鸟价仅需9.9元,可节约80%资料搜集时间,帮助考生高效备考、顺利通过考试。专栏持续更新,有问题可随时联系作者。

数据知道的博客 1万+

CakePHP3.2 文件接口篇

CakePHP文件夹结构 1.结构 在百度€™已经下载并提取CakePHP应用程序,这些文件你应该看到和文件夹: binconfiglogspluginssrcteststmpvendorwebroot.htaccesscomposer.jsonindex.phpREADME.md 2.src文件夹 Console:包含控制台命令和控制台应用程序任务。 Controll

刘庆付的博客 1112

【项目解析】2KW 230V 数字逆变器控制系统(二)

【项目解析】 2KW 230V 数字逆变器控制系统(一) 项目的 交流输出电压 并不是单纯一个电压环就能控制好的,而是典型的 双环控制架构:最终占空比控制量会经过计算: 然后写入 单片机 TMM 定时器的比较寄存器 (TMGRA0/TMGRD0/TMGRC1), → 定时器输出互补 PWM, → 驱动 IGBT 全桥, → 经过 LC 滤波形成 230 VAC / 50Hz 的正弦电压。总结交流电压是双环控制的结果:目标/作用:把输出 RMS 电压稳到目标(例如 230 VAC);在母线波动与负载变化下

Naiva的博客 1296

多线程编程 实战篇秘籍 (一)

实战篇秘籍 (一) 本来这几节的内容想拿出来单独放在秘籍篇中.但由于我在实战篇五的结尾处说:关于这个例子仍然还有很多可说的内容,所以经由这句话所引出的秘籍篇,作为实战篇的继续,就叫它实战秘籍.在实战篇五中,有两个非常关键的重点需要在

诗剑书生的专栏 4116

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

多线程编程 实战篇 (一)

实战篇(一) 在进入实战篇以前,我们简单说一下多线程编程的一般原则.[安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的.安全性的保证可以通过设计安全的类和程序员的手工控制.如果多个线程对同一对象访问不会危及安全性,这样的类就是线程安全的类,在JAVA中比如String类就被设计为线程安全的类.而

诗剑书生的专栏 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

多线程编程——实战篇(一)

多线程编程——实战篇(二)多线程编程——实战篇(三)多线程编程——实战篇(四)  在进入实战篇以前,我们简单说一下多线程编程的一般原则。  [安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的。  安全性的保证可以通过设计安全的类和程序员的手工控制。如果多个线程对同一对象访问不

leagle 1784

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

多线程编程——实战篇(一)

多线程编程——实战篇(一)   在进入实战篇以前,我们简单说一下多线程编程的一般原则。   [安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的。   安全性的保证可以通过设计安全的类和程序员的手工控制。如果多个线程对同一对象访问不会危及安全性,这样的类就是线程安全的类,在JAVA中比如

西_北 1292

多线程编程——实战篇(三)

多线程编程——实战篇(一)多线程编程——实战篇(二)多线程编程——实战篇(四)[深入了解线程对象与线程,线程与运行环境]   在基础篇中的第一节,我就强调过,要了解多线程编程,首要的两个概念就是线程对象和线程。现在我们来深入理解线程对象,线程,运行环境之间的关系,弄清Runnable与Thread的作用。  在JAVA平台中,序列化机制是一个非常重要的机制,如果不能理解并熟练应

leagle 1654

多线程编程——实战篇(二)

多线程编程——实战篇(一)多线程编程——实战篇(三)多线程编程——实战篇(四)  本节继续上一节的讨论。  [一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因。在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为sleep方法并不释放对象的锁。  这是一个极其恶劣的品德,你自己什么事也不干,进入sl

leagle 1359

C#5 多线程秘籍(一)

不久以前,典型的个人电脑 CPU 只有一个计算核心,功耗足以在上面煎鸡蛋。2005 年,英特尔推出了其第一款多核 CPU,自那时起,计算机开始朝着不同的方向发展。低功耗和多个计算核心变得比单个计算核心的性能更重要。这也导致了编程范式的变化。现在我们需要学会如何有效地使用所有 CPU 核心以实现最佳性能,同时通过仅在特定时间运行所需的程序来节省电池电量。此外,我们还需要以尽可能高效的方式编写服务器应用程序,以利用多个 CPU 核心甚至多台计算机来支持尽可能多的用户。

龙哥盟 1421
上一篇: cakephp: 和Smarty集成
下一篇: 图片大小自适应
httpnet
博客等级 码龄23年 7粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值