iframe无刷新文件上传实现程序
一个最原始最简单的iframe上传例子:
本例中采用iframe名字,所以表单在提交时会在iframe内打开链接(即无刷新,确切的说应该是
感觉无刷新)
在表单提交时,调用startUpload方法,当然这是JS定义的。
前台上传页面index.html,主要是一个表单与一个js回调函数。上传文件时,form表单的method、 enctype属性必须和下面代码一样。然后将target的值设为iframe的name,这样就可以实现无刷新上传文件。
代码如下 | 复制代码 |
<title>上传文件</title> |
后台上传处理页面uploadfile.php,这段代码为简单的上传代码,没有进行错误及异常处理。上传代码执行完成后,要告诉父页面已经上传完毕了,因此,在这个页面里调用父页面的回调函数CallbackFunction,这个函数可以有参数,形式自己定义。
代码如下 | 复制代码 |
<?php |
以上是用iframe实现无刷新上传文件的简单方法,想要健壮的程序的话需要再细化
例2
PHP利用iframe上传文件并返回值到父框架
淡水其实也是采用这样的做发法的。正好看到有童鞋博客上有这样写。就顺手贴过来了。
代码如下 | 复制代码 |
if($result) |
文件上传成功后,把文件路径写入一个隐藏的域中(img),然后用DOM原理把隐藏域中的VALUE发送到父框架的表单form1的img文本框中:
ok,再来看看淡水的。
淡水编辑器用了tinyMCE,所以有一点点不一样。
我的form页:
代码如下 | 复制代码 |
<script src="tiny_mce/tiny_mce.js" type="text/javascript"></script> }); function InsertHtml(type,path){ type=type.toLowerCase() switch(type){ |
iframe也就是在这个页面里了。
在我的iframe的提交给的php处理里:
代码如下 | 复制代码 |
$pasteJS = "<script type=text/javascript>n"; |
于是上传的文件就跑到tinyMCE的编辑框里了。upload的文件路径也通过userdata会暂存起来,直到写入database。路径保存这块儿,也是在iframe的提交给的php处理文件里的,这里淡水就不多写了。
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成平行线的图案对于上面有个大概的了解后,下面我们可以重新整合下代码,更加方便的使用它。代码如下 | 复制代码 |
<?php function UPCAbarcode($code) { $lw = 2; $hi = 100; $Lencode = array('0001101','0011001','0010011','0111101','0100011', '0110001','0101111','0111011','0110111','0001011'); $Rencode = array('1110010','1100110','1101100','1000010','1011100', '1001110','1010000','1000100','1001000','1110100'); $ends = '101'; $center = '01010'; /* UPC-A Must be 11 digits, we compute the checksum. */ if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); } /* Compute the EAN-13 Checksum digit */ $ncode = '0'.$code; $even = 0; $odd = 0; for ($x=0;$x<12;$x++) { if ($x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; } } $code.=(10 - (($odd * 3 + $even) % 10)) % 10; /* Create the bar encoding using a binary string */ $bars=$ends; $bars.=$Lencode[$code[0]]; for($x=1;$x<6;$x++) { $bars.=$Lencode[$code[$x]]; } $bars.=$center; for($x=6;$x<12;$x++) { $bars.=$Rencode[$code[$x]]; } $bars.=$ends; /* Generate the Barcode Image */ $img = ImageCreate($lw*95+30,$hi+30); $fg = ImageColorAllocate($img, 0, 0, 0); $bg = ImageColorAllocate($img, 255, 255, 255); ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg); $shift=10; for ($x=0;$x<strlen($bars);$x++) { if (($x<10) || ($x>=45 && $x<50) || ($x >=85)) { $sh=10; } else { $sh=0; } if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; } ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color); } /* Add the Human Readable Label */ ImageString($img,4,5,$hi-5,$code[0],$fg); for ($x=0;$x<5;$x++) { ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg); ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg); } ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg); /* Output the Header and Content. */ header("Content-Type: image/png"); ImagePNG($img); } UPCAbarcode('13322483157'); ?> |
原生态的写法
原始方式:发送header,用附件的表头发送到用户浏览器表示是要下载的,然后读出数据库中的数据,一条一条的解析,写入excel格式的文件中
代码如下 | 复制代码 |
<?php |
用PHPExcel库
下面是用PHPExcel实现的与上面功能相同的excel的方法。getCol为递归实现的函数,用于根据数字返回对应的列号编码。因为导出的过程中需要指出行号,列号。行号为简单的数字,而列号则为“A-Z”的组合。为了方便二维数组的导入,根据列数自动得到列号编码
使用说明:
1、将后面的代码存为excel.php,然后在页面中调用它。
2、然后调用 xlsBOF(),将一些内容写入到xlswritenunber() 或者 xlswritelabel()中,最后调用 xlsEOF()结束。
也可以用 fwrite 函数直接写到服务器上,而不是用echo 仅仅在浏览器上显示。
下面是PHP代码:
代码如下 | 复制代码 |
<?php <?php |
完整实例
代码如下 | 复制代码 |
<? /** // uncomment // 创建一个处理对象实例 // 创建文件格式写入对象实例, uncomment //************************************* //*************************************
//设置当前活动sheet的名称 //************************************* //显式指定内容类型 //合并单元格 //分离单元格 //************************************* //设置宽度 $objStyleA5 = $objActSheet->getStyle('A5'); //设置单元格内容的数字格式。 //设置字体 //设置对齐方式 //设置边框 //设置填充颜色 //从指定的单元格复制样式信息.
//保护单元格
?> |
js版
匹配中文字符的正则表达式: [/u4e00-/u9fa5]
匹配双字节字符(包括汉字在内):[^/x00-/xff]
代码如下 | 复制代码 |
if(reg.test(str)) 计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;} |
php版
php正则匹配汉字!
/^[x{4e00}-x{9fa5}]+$/u
代码如下 | 复制代码 |
$action = trim($_GET['action']); |
当然如果要想字符串全是汉字的GBK2312编码匹配为:
代码如下 | 复制代码 |
uft8编码正则 $str = "汉字"; |
其实只要了解了各个编码的高位与低位的开始与结束,那么自然就可以写出正则,而且直接是十六位的,有啥困难?呵呵。不过要注意,在php里面,表示十六位是用的x。
gbk,gb2312的例子:
代码如下 | 复制代码 |
<?php
|
+$/u 的意思:
+ 表示重复1次或多次;
$ 表示匹配末尾;
/ 表示定界符;
u 表示模式字符串被当成 UTF-8;
U 表示第一次匹配后即停止搜索。
要匹配2-4 个,用{2,4}表示。
/^[x{4e00}-x{9fa5}]{2,4}$/u
代码如下 | 复制代码 |
<? //去掉开始和结束的空白 //去掉跟随别的挤在一块的空白 //最后,去掉非space 的空白,用一个空格代替 echo "<pre>{$str}</pre>"; ?> |
上例一步一步的去掉所有的空白。首先我们使用trim()函数来去掉开始和结束的空白。然后,我们使用preg_replace() 去除重复的。s代表任何whitespace 。(?=) 表示向前查找 。它味着只匹配后面有和它本身相同字符的字符。所以这个正则表达式的意思是: "被whitespace 字符跟随的任何whitespace 字符。" 我们用空白来替换掉,这样也就去除了,留下的将是唯一的whitespace 字符。
最后, 我们使用另一个正则表达式[nrt]来查找任何残余的换行符(n), 回车(r), 或制表符(t) 。我们用一个空格来替换这些。
相关文章
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- 本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
- 又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
- 本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
这篇文章将使用jQuery,并结合PHP,将Fckeditor发布的内容进行分页,并且实现无刷新切换页面。 本文假设你是WEB开发人员,掌握了jQuery和PHP相关知识,并且熟知Fckeditor的配置和使用。...2015-10-23- 本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
- 这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
- 这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
- 这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
借助FileReader实现将文件编码为Base64后通过AJAX上传
这篇文章主要介绍了借助FileReader实现将文件编码为Base64后通过AJAX上传的方法,包括后端对文件数据解码并保存的PHP代码,需要的朋友可以参考下...2015-12-25- 本文就是和大家分享一款由php结合ajax实现的无刷新留言板,先给大家看一下最后的效果图:数据库连接代码如下: <?php$conn = @mysql_connect("localhost","root","root") or die ("MySql连接错误");mysql_select_db("d...2015-10-30
- 这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
- 这篇文章主要为大家详细介绍了js实现上传文件添加和删除文件选择框 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-25
- 这篇文章主要介绍了jQuery+ajax简单实现文件上传的方法,结合实例形式简单分析了jQuery基于ajax的post方法进行文件传输及asp.net后台处理技巧,需要的朋友可以参考下...2016-06-12
- 这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
- 这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-13
- 本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:<?phpclass Test_Upload{ protected $_uploaded = array(); protected $_destination; protected $_max = 1024000; protected $_messages =...2015-10-30
- 这篇文章主要介绍了C#实现刷新桌面的方法,涉及C#基于shell32.dll动态链接库实现系统桌面刷新的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了js 实现文件上传样式,下面文章举例说明js 是如何实现文件上传样式的,附有代码详细解说,需要的朋友可以参考一下,希望对你有所帮助...2021-10-21
- 代码很简单,实现的功能却很实用,直接奉上代码CSS:复制代码 代码如下: <meta charset="utf-8" /> <title>Pull to Refresh</title> <meta name="viewport" content="width=device-width,height=device-height,inital-scal...2015-03-15