使用pdfobject.js实现在线浏览PDF--后台上传保存文件

本文详细介绍了如何在后台上传PDF文件,并使用PDFObject在前端进行显示的方法。包括了上传样式设置、PHP后台文件处理及保存流程,以及前端显示的技术实现。
今天产品有了一个提了一个新的需求:后台上传PDF文件

因为要的着急,所以老大直接给了我建议:使用PDFObject来实现前端的显示,后台上传文件想必大家都很熟悉了,就是跟上传图片额功能是一样的,完全不用修改

一、后台上传样式
<div class="div div7" style="width: 700px;">上传附件(PDF不得超过100M):<input type="file" name="files" class="join-num" id="attachement"  size="20"/>
                    <input type="button" class="btn" id="buttonUpload" onclick="ajaxFileUpload('attachement');" value="上传附件"/><span style="color:red">*</span>
                    <input type="text" name="downloadpath" id="downloadpath" value=""/>
                    <input type="hidden" name="filetype" id="filetype" value=""/>
                </div>

运营直接点击上传附件就触发了上传的js以及后台请求,接下来就是后台接受请求,进行收到的文件处理并保存

二、后台PHP接收处理、保存文件

注:本人的PHP版本较低,处理代码仅供参考,但逻辑绝对没差

public function postIndex(){
		ini_set('max_execution_time',3600);
		$sTmpname = $_FILES['files']['tmp_name'];
		$sFilename = $_FILES['files']['name'];
		$sTime = time();
		$sFilesize = round(@filesize($sTmpname)/1024,2);
		$sError = '';
		if(!empty($_FILES['files']['error'])){
			switch($_FILES['files']['error'])
			{
				case '1':$sError = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';	break;
				case '2':$sError = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';break;
				case '3':$sError = 'The uploaded file was only partially uploaded';break;
				case '4':$sError = 'No file was uploaded.';break;	
				case '6':$sError = 'Missing a temporary folder';break;
				case '7':$sError = 'Failed to write file to disk';break;
				case '8':$sError = 'File upload stopped by extension';break;
				case '999':default:$sError = 'No error code avaiable';
			}
		}elseif(empty($sTmpname) || $sTmpname == 'none'){
			$sError = 'No file was uploaded..';
		}elseif($sFilesize > 102400){
			$sError = '每份上传文件不能超过100M';
		}else{
			$aTypes = array('jpg','bmp','png','gif','doc','docx','xls','xlsx','pdf','zip','swf','flv');//***********上传类型
			
			$sFiletype = false;
			$sExt = explode(".",$sFilename); 
			$sExt = array_pop($sExt);
			$sExt = strtolower($sExt);
			if(in_array($sExt,$aTypes)){
				$sFiletype = $sExt;
			}
			//递归创建目录
			if($sFiletype){
				$sPath = 'uploadfile/'.date('Y',$sTime).'/'.date('md',$sTime);
				$spptPath = '';//ppt保存路径
				if(in_array($sFiletype,array('ppt','pptx'))){
					$spptPath = 'uploadfile/ppt';//ppt保证能找到路径
				}
				$path = $sPath;
				$sPath = $this->publicpath.'/'.$sPath;
				mkdirs($sPath);
				//如果是ppt的话,创建ppt路径用于ppt转图片
				if($spptPath){
					$spptPath = $this->publicpath.'/'.$spptPath;
					mkdirs($spptPath);
				}
				
				//保存上传的图片
				$filename=date('YmdHis',$sTime).rand(1000,9999).'.'.$sFiletype;//生成文件名
				$file_allurl=$sPath.'/'.$filename;//保存文件的路径
				if(!move_uploaded_file($sTmpname,$file_allurl)){
				    $sError = "failed to copy $file_backup...\n";
				}
				
				//拷贝ppt用以ppt2img
				if($spptPath){
					$ppt_url = $spptPath.'/'.$filename;
					copy($file_allurl,$ppt_url);
				}
				
				//取得回传的文件信息(文件名称、类型)
				$url = $path.'/'.$filename;
				$sMsg = " File Name: " . $sFilename. ", ";
				$sMsg .= " File Size: " . $sFilesize.", ";
			 	$sType = $sFiletype;
			}else{
				$sError='文件类型错误!允许的文件类型: ';
				foreach($aTypes as $k=>$v){
					if($k==0) $sError.=$v;
					else  $sError.=','.$v;
				}
			}
			@unlink($_FILES['files']);
		}
		if(empty($_FILES['files']['error'])&&$sFiletype){
			$pptid = 0;
			if(in_array($sType,array('ppt','pptx'))){
				$aPpt = array('pptname'=>$sFilename,'newname'=>$filename);
				$oPpt = new Ppt($aPpt);
				$oPpt->save();
				$pptid = $oPpt->getKey();
			}
			$aAttachement = array('filename'=>$filename,'filepath'=>$url,'filetype'=>$sType,'filesize'=>$sFilesize,'created_at'=>$sTime);
			$oAttachement = new Attachement($aAttachement);
			$oAttachement->save();
			$fileid="";
			$aReturn_array = array(
						"error"=>$sError,
						"id"=>$fileid,
						"msg"=>$sMsg,
						"ftype"=>$sType,
						"filesize"=>$sFilesize,
						"filename"=>$filename,
						"sourcename"=>$sFilename,
						"url"=>$url,
						'pptid'=>$pptid
						);
		}else{
			$aReturn_array = array("error"=>$sError);
		}
		return json_encode($aReturn_array);

这里是对于你可以用到的所有类型的文件处理,包含*‘jpg’,‘bmp’,‘png’,‘gif’,‘doc’,‘docx’,‘xls’,‘xlsx’,‘pdf’,‘zip’,‘swf’,‘flv’*这些也算比较完全了,这里可以好好研究一下哟

前两部是保存pdf的步骤,接下来就是PDF显示的分享了。
为了更详细的介绍,请移驾到下一篇,好好听我分享

下一篇:使用pdfobject.js实现在线浏览PDF–前端显示PDF

干货:使用pdfobject.js实现在线浏览PDF–前端显示PDF

干货:使用pdfobject.js实现在线浏览PDF–前端显示PDF

正事说完了,在这里帮忙宣传一个日用百货的店铺:‘我虽然资历尚浅,但质量绝对保证,价格绝对良心’
店铺名称:98K杂货店,点击进店铺,欢迎选购哟,说明了解来源可以优惠!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值