在PHP.MVC中上传文件

  PHP.MVC官方网站上介绍的是使用PEAR::HTTP_Upload 包来处理上传,而我只是用原始的方式来进行上传的处理,主要是为了说明在MVC的框架中怎样上传文件.以后我可能会使用PEAR::HTTP_Upload 包来做.

  1.打开phpmvc-config.xml,在<phpmvc-config>标签中加上:

<controller maxFileSize="1048576" tempDir="C:\www\upload\">
</controller>

  其中maxFileSize为上传文件大小的最大值,单位是字节,上传的文件会用一个临时的名字存放在php.ini所配置的位置,我们当然要把这些文件另存到我们自己的目录中,tempDir就是这个目录.

  2.保存文件.现在写一个php页,里面写一个上传文件的表单:

<form enctype='multipart/form-data' method='POST' action='Main.php?do=upload'>
    <input type='file' name='file'><br/>
    <input name='submit_files' value='上传' type='submit'>
</form>

  其中enctype一定要设定为multipart/form-data

  3.写一个ActionForm类,比如叫UploadForm,这个类和普通的ActionForm大同小异,但我们要在其中的validate方法中实现操作上传的文件.首先要得到xml配置文件中的值:

$appConfig =& $this->actionServer->getApplicationConfig($request);
$controllerConfig =& $appConfig->getControllerConfig();
$tmpFileDir = $controllerConfig->getTempDir();
$maxFileSize= intval($controllerConfig->getMaxFileSize(),10);

  一定要把文件大小那个用intval函数转换成整形数据.

  接着得到我们上传的文件信息:

$upload_file=$_FILES['file']['tmp_name'];
$upload_file_name=$_FILES['file']['name'];
$upload_file_size=intval($_FILES['file']['size'],10);

  ['file']是上传表单的名字.tmp_name,name和size分别是这个文件的临时文件地址(包括文件名),源文件名和大小.同样大小也需要转换为整形

  下面判断上传的文件是否达到我们的大小要求:

if($upload_file_size > $maxFileSize)
{
 //这里做错误处理
}

  最后拷贝我们的文件到目的目录:

if (!copy($upload_file,$tmpFileDir.$upload_file_name))
{
 //这里做复制失败处理
}

  4.下面是Action类,这个类就和普通的Action一样,里面可以做一些文件上传后的处理,也可以直接重定向到上传成功的页面.

  5.将你的ActionForm和Action配置到phpmvc-config.xml中去,运行一下试试吧!

时间: 2024-10-03 10:40:31

在PHP.MVC中上传文件的相关文章

Spring MVC中上传文件实例_JSP编程

SpringMVC(注解)上传文件需要注意的几个地方: 1.form的enctype="multipart/form-data",这个是上传文件必须的 2.applicationContext.xml配置: 复制代码 代码如下: <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.w

新手 求easyui-filebox在struts2中上传文件的例子

问题描述 新手 求easyui-filebox在struts2中上传文件的例子 <div id=""toolbar"" class=""easyui-panel"" align=""right""> <form name=""FileUploadForm"" method=""post""

微信网页中上传文件时“只能选择SD卡中的文件”问题

问题描述 微信网页中上传文件时"只能选择SD卡中的文件"问题 解决方案 这个应该是微信上传文件的设置问题吧,我的也是这样. 解决方案二: 微信有jssdk拍照上传接口,可以看看相关文档. 解决方案三: 应该是设置中的问题吧

解析ASP.NET应用程序中上传文件的方案

在Web程序中上传文件是很常见的需求.利用HTTP协议上传文件的方式非常有限,最常见的莫过于使用<input type="file" />元素进行上传.这种上传方式会将内容使用multipart/form-data方案进行编码,并将内容POST到服务器端.使用multipart/form-data编码方式与默认的application/x-url-encoded编码方式相比,在大数据量情况下效率要高很多. 使用<input type="file"

总结三种ASP.Net中上传文件的方法

ASP.Net的WebForm开发模式中,封装了FileUpload控件,可以方便的进行文件上传操作.但有时,你可能不希望使用ASP.Net中的服务器控件,仅仅使用Input标签来实现文件上传.当然也是可以的.下面总结在项目中使用过的上传文件的方式. 本文我们总结了三种ASP.Net中上传文件的方法. 一.使用Asp.Net中的FileUpload服务器端控件实现上传 使用asp.net中的服务器端控件FileUpload上传文件非常方便.FileUpload对上传操作进行了封装,你只需要调用S

ASP.NET MVC:HTML 5+MVC上传文件显示进度的代码

<head> <title>Index</title> <style type="text/css"> #statusBorder { position:relative; height:5px; width:100px; border:solid 1px gray; display:none; } #statusFill{ position:absolute; top:0; left:0; width:0px; background-c

Spring MVC 上传文件(upload files)

上传功能是一个web应用很常用的一个功能,比如在一些社交网站上传些图片.视频等.本篇文章主要研究了spring mvc是如何实现文件上传功能的,在具体讲解spring mvc如何实现处理文件上传之前,必须弄明白与文件上传相关的multipart请求. 一.关于multipart 请求 我们传统的表单提交的一般都是文本类型的数据,比如我们的注册表单,当提交表单时,表单中的"属性-值"对会被拼接成一个字符串: firstName=Charles&lastName=Xavier&am

spring MVC上传文件

spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.applicationContext.xml中 关于文件上传的配置不能少 大家可以看具体代码如下: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://w

ASP.net中上传文件的操作

asp.net|上传 作者:abigfrog(千年精灵)(★JAVA★) <一>.选择本地要上传到服务器的文件 首先要感谢ASP.NET的强大功能,他提供的HTML控制元件,使得我们很容易的通过一个对话框来选择要上传的文件.当然你的浏览器也必须是IE 3.02 或者Netscape 3.0版本或者比这二者版本高的浏览器.通过下列语句就可以完成选择本地一个文件的工作: <input id = " loFile " type = " file " ru