php无刷新的pdf文件上传,php实现无刷新上传文件功能详解_PHP教程

前段时间做个ajax的应用,其中涉及到一个上传文件,然后从文件中读取相关内容的操作。php上传文件不难,难就难在页面要无刷新,想来想去没什么招,后来baidu下,找到个方法,成功实现无刷新上传文件。我把思路整理下,和朋友们共享,也欢迎提出批评指导意见。

技巧:利用form表单的target属性和iframe。

不喜欢看大段代码的朋友可以自己思考下。文章底部有提供完成的测试程序。

一、上传文件的一个php方法。

该方法接受一个$file参数,该参数为从客户端获取的$_FILES变量,返回重新命名后的文件名,如果上传失败,则返回空字符串。

php代码

function uploadFile($file) {

// 上传路径 $destinationPath = “./upload/”;

if (!file_exists($destinationPath)){

mkdir($destinationPath , 0777); }

//重命名

$fileName = date(YmdHis) . _ . iconv(utf-8 , gb2312 , basename($file[name]));

if (move_uploaded_file($file[tmp_name], $destinationPath . $fileName)) { return iconv(gb2312 , utf-8 , $fileName);

} return ;

}

二、客户端HTML代码

这里正是技巧所在,添加另一个iframe来实现。表单标签form定义了一个属性target,该属性解释如下:

[pre]target属性:

_blank ———- 新开窗口

_self ———– 自身

_top ———— 主框架

_parent ——— 父框架

自定义名字 —– 出现于框架结构,将会在该名称的框架内打开链接

本例中采用iframe名字,所以表单在提交时会在iframe内打开链接(即无刷新,确切的说应该是

感觉无刷新)

在表单提交时,调用startUpload方法,当然这是JS定义的。

[/pre][pre]此外我们还定义一个span来显示提示信息。代码如下:

[/pre]xhtml代码

导入文件:

iframe>

form> span>

三、JS部分

这部分比较简单,只是显示提示信息

javascript代码

function startUpload() {

var spanObj = document.getElementById(“info”); spanObj.innerHTML = ” 开始上传”;

}

function stopUpload(responseText){ var spanObj = document.getElementById(“info”);

spanObj.innerHTML = ” 上传成功; spanObj.innerHTML = responseText;

}

接下来就要看服务器端得处理了。

四、服务器段处理部分

php代码

$file = $_FILES[myfile]; $fileName = uploadFile($file);

$result = readFromFile(“./upload/” . $fileName);

此外在后面还应该加上一句JS代码用来调用stopUpload方法。

javascript代码

window.top.window.stopUpload(“”);

最后在补上php中的readFromFile方法,就大功告成了。

php代码

function readFromFile($target_path) {

// 读取文件内容 $file = fopen($target_path,r) or die(“unable to open file”);

$fileContent = ; while(!feof($file))

{ $str = fgets($file);

$fileContent .= $str; }

fclose($file); return $fileContent;

}

www.bkjia.comtrueTechArticle前段时间做个ajax的应用,其中涉及到一个上传文件,然后从文件中读取相关内容的操作。php上传文件不难,难就难在页面要无刷新,想来想…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值