使用pdfobject.js實現在線瀏覽PDF--後臺上傳保存文件

今天產品有了一個提了一個新的需求:後臺上傳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" "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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章