php中上传文件时用<input type="file" name="file" value="上传文件" />标签,然后当表单提交之后可以在后台用$_FILES['file']获取到上传文件的信息,但是上传文件大小不得超过1M,超过1M就要提示信息到前台页面,并且不能提交页面数据,还要保留页面其它数据不丢失。这个验证该怎么做才好呢?我之前是在表单提交后执行表单action中的方法中验证的,但是当上传文件大小大于1M时,提示用户,并返回原页面,而返回之后页面已经过期,之前的数据都丢失了。后来我又想在前台能不能ajax请求去解决这个页面跳转问题,但是在写ajax的时候发现在ajax的url方法中获取不到$_FILES['file']。所以请高手指点如何取得上传文件信息,或者有什么其他更好的验证方法?
解决方案 »
- 请教PHP正规表达式获取指定文件夹里的所有图片名,再把这些相关图片删除的操作
- 基础的显示问题
- 求页面打开后自动打开迅雷下载和点击后迅雷下载
- 如何将一段PHP程序写成函数,或类,方便重复调用
- PHP语言可不可以提取视频流中每帧的帧头,在OCX中播放视频啊?
- 想请教这个网值多少钱http://www.wsoo.com/
- 向专家求解几个问题,关于php4.1.2
- windows2008下配置iis+mysql+phpmyadmin运行phpmyadmin提示错误
- php 到时间怎么执行某段代码 , 大神求助
- tp5中如何去实现类似淘宝的SKU组合?
- 表单php删除功能实现
- 高手请进,一个ASP函数想转成PHP函数
试试这个吧,很不错的,只是要求浏览器支持javascrip才能用
http://valums.com/ajax-upload/
我用了iframe,挺好的,非常感谢!
<input id="upload_file" type="file" name="file" value="上传文件" onchange="check_uploadFile();" />(不超过10M)
<font id="upload_remind" color="red"></font>
</form><form id="upload" method="post" action="index.php?ctl=filemanager&act=checkUploadFile" encType="multipart/form-data" target="file_frame" style="display:none">
</form>
<iframe name='file_frame' id="file_frame" style="display:none"></iframe>第一步:前台js代码: //在更换上传文件时执行
function check_uploadFile(){
var newForm = $('upload');
newForm.empty();//每次更换上传文件都会执行check_uploadFile方法,所以每次都会复制一个"file"控件添加到第二个form表单中,故每次在复制前将第二个form表单中的元素清空。
var newfile = $('upload_file').clone(true);//复制第一个表单中的"file"控件。
newForm.adopt(newfile);//将复制的控件添加到第二个form表单中。 $('upload').submit();//提交第二个表单,因为在后台获取$_FILES的值需要提交表单
}第二步:后台checkUploadFile()方法代码 function checkUploadFile(){
if($_FILES['file']['error'] > 0){
echo '<script language="javascript">parent.cus_callback(0)</script>';
}else{
if($_FILES['file']['size'] > 10485760){
echo '<script language="javascript">parent.cus_callback(0)</script>';
}else{
echo '<script language="javascript">parent.cus_callback(1)</script>';
}
}
}注:方法中看到输出一段js,并且js中执行parent.cus_callback()方法,这个方法指的是前台iframe(内嵌框架)的父类中的cus_callback方法。所以我们现在回到前台写cus_callback()方法。第三步:前台cus_callback()方法代码 function cus_callback(rs){
if(!rs){
$('upload_remind').innerHTML = '文件大小不能大于10M!';
}else{
$('upload_remind').innerHTML = '';
}
}注:以上全部是个人理解,如有错误敬请指正,互相学习,互相进步,谢谢!