1. 程式人生 > >PHP+JavaScript+HTML實現上傳PDF和瀏覽PDF課件

PHP+JavaScript+HTML實現上傳PDF和瀏覽PDF課件


一. 隱藏/顯示table

        首先介紹如何通過JavaScript實現點選超連結實現隱藏和顯示Table或DIV的效果,程式碼如下所示:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
	/* 這個連結改變顏色 */
	a.one:link {color: #0000ff}
	a.one:visited {color: #0000ff}
	a.one:hover {color: #ffcc00}
</style>
</head>
<script language="JavaScript">
function change(el) {
	whichEl = document.getElementById(el)    //獲得指定ID值的物件
	if (whichEl.style.display == 'none') {   //block是預設值為顯示,none為隱藏
	   whichEl.style.display   = 'block';
	} else {
	     whichEl.style.display   = 'none';
	}
	return;
}
</script>
<body>
<TABLE cellSpacing=0 cellPadding=2 width="95%" align=center border=0>
  <TR>
    <TD align=left width=120 style="COLOR: #880000;font-weight:bold;">
    <a href="#" class="one" onclick=change("operate")> 上傳課件 </a></TD></TR>
</TABLE>
<form action="upload.php" method="post" enctype="multipart/form-data">
<TABLE id="operate" cellSpacing=0 cellPadding=0 width="80%" align=right border=0 style="DISPLAY: none">
  <tr>
    <td colspan="3"><hr width="90%" size="1" color="#FF0000"></td>
  </tr>
  <TR>
    <td width="80"><div align="right">課程編號: </div></td>
    <td><?php echo $_SESSION['courseid']; ?></td>
    <td></td>
  </TR>
  <TR>
    <td width="120"><div align="right">課件名稱: </div></td>
    <td width="250"><input type="text" name="kjname" id="kjname" value="" style=width:165pt; maxlength="50"/></td>
    <td></td>
  </TR>
  <TR>
    <td ><div align="right">上傳課件: </div></td>
    <td><input type="file" name="myfile" value="" style='font-size:16px'/>(*小於2M)</td>
  </TR>
  <TR height=4>
    <TD colspan="3"></TD>
  </TR>
  <tr>
    <td colspan="3"><hr width="90%" size="1" color="#FF0000"></td>
  </tr>
  <tr>
      <td colspan="3" align="middle"><div align="middle">
      <input type="submit" style='font-size:22px' name="submit" value="確認上傳"/>
      </div></td>
  </tr>
</TABLE>
</form> 
</body>
</html>
        其中核心程式碼是通過<script language="JavaScript">..</script>定義JavaScript函式,設定style.display屬性none隱藏、block顯示;同時在超連結中呼叫該函式實現如上圖所示的效果。程式碼如下:
        <script language="JavaScript">
       
function change(el) {
            whichEl =
document.getElementById(el)    
            if (whichEl.style.display == 'none') {  
//block為顯示,none為隱藏
whichEl.
style.display   = 'block';
            } else {
whichEl.style.display   = 'none';
            }
            return;
        }
        </script>
        <a href="#" class="one"onclick=change("operate")> 上傳課件 </a>
        <TABLEid="operate" align=right border=0style="DISPLAY: none"
>//初始隱藏
        同時在超連結中我通過設定style屬性,當點選、移動到超連結上顯示的顏色不同。在超連結中通過<a class="one">即可實現。程式碼如下:
        <style type="text/css">
            /* 這個連結改變顏色 */
            a.one:link {color: #0000ff}
            a.one:visited {color: #0000ff}
            a.one:hover {color: #ffcc00}

        </style>
        <a href="#" class="one"onclick=change("operate")> 上傳課件 </a>
       
顯示效果如下圖所示:

二. 顯示PDF在HTML網頁中

        顯示PDF是通過超連結跳轉的,這也是我前面PHP值傳遞中講述過的方法。其核心程式碼main_right3-3.php如下:
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=right border=0>
	<?php
		//獲取課件資訊
		$hgi=new HttpPostInf();
		$result=$hgi->doquery('2',"select * from Courseware_PDF where CP_Cid='".$cid."';");
		$dj=json_decode($result,true);
		$jcount=count($dj);
		for($i=0; $i<$jcount; $i++){
	?>
	<TR height=10>
  	<TD></TD></TR>
  <TR>
  	<TD width=40><IMG src="../images/pdf-24.png"></TD>
    <TD>
    <A href="main_right3-3-content.php?id=<?php echo $dj[$i]['CP_PDFurl'] ?>" 
    	class="one" target="rightFrame"><?php echo $dj[$i]['CP_Cwname'];?></A>
	  </TD>
 	  <TD></TD>
 	</TR>
 	<?php
		}
	?>
	<TR height=20><TD></TD></TR>
</TABLE>
        其中裡面巢狀的PHP程式碼是連線資料庫裡面的資料,其中資料庫是通過新浪SAE搭建的,PDF儲存的是URL,你既可以連線本地的地址也可連線雲盤上的地址。如下圖所示:

        其中例項化類new HttpPostInf在httppost.php中,主要是後臺通訊處理。程式碼如下:
<?php
header("Content-Type: text/html; charset=utf-8");
class HttpPostInf{
    function __construct(){ //無參建構函式
    }
    function doquery($type , $sql){ //網路通訊函式
			$data = array ('sqlType' => $type , 'sqlExe' => $sql); 
			$data = http_build_query($data);  
			$opts = array ('http' => array ('method' => 'POST','header'=> "Content-type: application/x-www-form-urlencoded\r\n" ."Content-Length: " . strlen($data) . "\r\n",'content' => $data)); 
			$context = stream_context_create($opts);
			$html = file_get_contents('http://courseweb.sinaapp.com/courseweb.php', false, $context);
			return $html;
	}	
}
?>
        通過下面程式碼即可實現跳轉到main_right3-3-content.php顯示相應php,而傳遞的id引數整數你點選的PDF超連結對應的資料庫課件URL地址。
        <A href="main_right3-3-content.php?id=<?php echo $dj[$i]['CP_PDFurl'] ?>" 
            class="one" target="rightFrame">
       
下面是main_right3-3-content.php程式碼顯示PDF,這是通過HTML5實現的。

<?php
	header("Content-Type: text/html; charset=utf-8");
	//include ("saestorage.class.php");
	//echo $_GET['id'];
?>

<!DOCTYPE HTML>
<html>
<body>
	<embed width=100% height=100% fullscreen=yes src="<?php echo $_GET['id'];?>" />
</body>
</html>
        下圖是顯示我們的雲盤中PDF的例子:
<html>
<body>
<embed width=100% height=100% fullscreen=yes 
src="http://courseweb-coursewebpdf.stor.sinaapp.com/Expected%20Divergence%20based%20Feature%20Selection.pdf" />
</body>
</html>
        你通過上面程式碼可以顯示如下圖所示的線上PDF效果。
        同樣本地的網址為src="http://localhost:8080/CourseStudy/pdf/iCoot.pdf"即可顯示,其中資料夾為安裝的Apache路徑“F:\\xampp\htdocs\CourseStudy\pdf”,其中CourseStudy是我這個專案的檔名。
 

三. PHP上傳PDF

        PHP上傳PDF程式碼如下,通過Form中定義屬性enctype="multipart/form-data",同時上傳到action="upload.php"該路徑下進行處理,提交方法採用POST方法。而選擇檔案的是input定義type="file"即可。main_right3-3.php程式碼上傳部分如下:
<form action="upload.php" method="post" enctype="multipart/form-data">
<TABLE id="operate" cellSpacing=0 cellPadding=0 width="80%" align=right border=0 style="DISPLAY: none">
  <tr>
    <td colspan="3"><hr width="90%" size="1" color="#FF0000"></td>
  </tr>
  <TR>
  	<td width="80"><div align="right">課程編號: </div></td>
    <td><?php echo $_SESSION['courseid']; ?></td>
    <td></td>
  </TR>
  <TR>
  	<td width="120"><div align="right">課件名稱: </div></td>
    <td width="250"><input type="text" name="kjname" id="kjname" value="" style=width:165pt; maxlength="50"/></td>
  	<td></td>
  </TR>
  <TR>
  	<td ><div align="right">上傳課件: </div></td>
    <td><input type="file" name="myfile" value="" style='font-size:16px'/>(*小於2M)</td>
  </TR>
  <TR height=4>
    <TD colspan="3">
    </TD>
  </TR>
  <tr>
    <td colspan="3"><hr width="90%" size="1" color="#FF0000"></td>
  </tr>
  <tr>
    <td colspan="3" align="middle"><div align="middle">
      <input type="submit" style='font-size:22px' name="submit" value="確認上傳"/>
    </div></td>
  </tr>
</TABLE>
</form> 
        而上傳檔案upload.php程式碼如下,主要是通過<input type="file" name="myfile"中myfile對應上傳的檔案PDF屬性,並判斷是否是PDF檔案。
bool move_uploaded_file ( string filename, string destination) 上傳檔名filename到指定路徑destination
       
程式碼中我是上傳到專案中pdf資料夾下,同時以當前時間命名;後面是插入資料庫課件表的操作。
        $_FILES['myfile']['name']是指被上傳檔案的名稱
        $_FILES['myfile']['type']是指被上傳檔案的型別,此時為"application/pdf"
        $_FILES['myfile']['size']是指被上傳檔案的大小,單位為位元組(B)
        $_FILES['myfile']['tmp_name']  是指被上傳檔案存在伺服器中的臨時副本檔名稱,檔案被移動到指定目錄後臨檔案將被自動消毀。
        參考: http://blog.csdn.net/wer1234s/article/details/7845018

<?php
	header("Content-Type: text/html; charset=utf-8");
	include ("../database/human.php");
	include ("../database/course.php");
	session_start();
	if($_POST)
	{
			$file_name= $_FILES['myfile']['name'] ;
			$tmp_name = $_FILES['myfile']['tmp_name']; 
			if ($_FILES['myfile']['type'] != "application/pdf") {
				 echo "<p>請上傳 PDF 格式的檔案.</p>";
			}
			else {
				if(is_uploaded_file($tmp_name)) {
					//upload file  	
					$dest_dir='pdf'; //上傳檔案的路徑
					$name=$dest_dir.'/'.time().".pdf";
					$time = time();
					$result=move_uploaded_file($tmp_name,$name);
					if($result==1) { 
						echo "<p>成功上傳</p>";
						$path="http://localhost:8080/CourseStudy/teacher/".$name;
						//echo $path;
						//插入資料
						$sql = "INSERT INTO Courseware_PDF (CP_Cno,CP_Cid,CP_Cwname,CP_PDFurl) ";
						$sql .= "VALUES ('".$time."','".$_SESSION['courseid']."','".$_POST['kjname']."','".$path."');";
						echo $sql;
						$hgi=new HttpPostInf();
						$result=$hgi->doquery('1',$sql);
						header('Location:main_right3-3.php');
					}
				}
				else {
					echo "<p>上傳檔案失敗</p>";  
				}
			}
	}
?>
        如下圖所示,選擇PDF並上傳的執行結果,同時檔案上傳至資料夾為安裝的Apache路徑“F:\\xampp\htdocs\CourseStudy\pdf”路徑下。


        最後希望文章對你有所幫助,因為這些知識都是環環相扣的,所以單獨講述不太易懂,我也是盡我自己的最大努力寫這幾篇文章,可能文章效果不是很好,也存在著很多不足之處。但請海涵,還是希望你能發現文章中對你有用的知識吧!最後紀念下自己寫的第100篇部落格,兩年時間感謝自己~期待更長
        (By:Eastmount 2015-3-6 深夜3點  http://blog.csdn.net/eastmount/






相關推薦

PHP+JavaScript+HTML實現PDF瀏覽PDF

一. 隱藏/顯示table         首先介紹如何通過JavaScript實現點選超連結實現隱藏和顯示Table或DIV的效果,程式碼如下所示:<html> <head> <meta http-equiv="Content-Type" content="text/html;

用struts2實現檔案轉化檔案為html

action public class shangchuanAction extends ActionSupport{ public File some; public String someFileName; public File getSome() { return so

基於springMVC+AJAX+bootstraptable實現檔案客戶端分頁

1 首先看一下上傳表格程式碼,主要程式碼如下: <form method="post" enctype="multipart/form-data" id="orderform"> <div class="col-md-6 col-sm-12"&

使用form表單同時實現檔案提交文字資料

使用form表單同時實現上傳檔案和提交文字資料,此示例中在後臺將檔案上傳到阿里的oss儲存伺服器中 申請oss相關賬號: endpoint = "http://oss-cn-qingdao.aliyuncs.com"; accessKeyId = "key"; accessKeySecret = "secr

ajax實現檔案form表單檔案的區別

在使用form表單的時候,一旦點選提交觸發submit事件,一般會使得頁面跳轉,頁面間的跳轉等行為的控制權往往在後端,後端會控制頁面的跳轉及資料傳遞,但是在某些時候不希望頁面跳轉,或者說想要將控制權放在前端,通過js來操作頁面的跳轉或者資料變化。 一般這種非同步的操作,我們

檔案下載pdf還有tp3掃二維碼下載and輸出text檔案給使用者

思路:後臺點選上傳,然後上傳到指定位置,然後取得這個字串寫到資料庫 <!--後臺那邊上傳檔案的標籤程式碼--> <form id="upload-form" action=

javaScript如何實現檔案

在進行頁面編寫的時候,我們有時會遇到需要上傳檔案,下面我們就來總結一下,如何來上傳檔案 1.上傳單個檔案 上傳單個檔案比較簡單,直接通過設定input元素的屬性type=“file”即可實現 執行之後,點選選擇檔案,就可以選擇任意位置的單個檔案。 2.上傳資料夾 實現上

使用JQ載入圖片,實現前先瀏覽.支援IE8+,火狐,Chrome,不支援Safari

一同事在圖片這一塊遇到了不少相容性問題,我結合網路上的資料寫了一個預覽功能,支援多圖片載入,支援自定義圖片格式,支援圖片檢測,支援錯誤取消. 話不多說,直接上傳程式碼. imgpreview.js 檔案如下. /*! ImgPreView v0.0.3 ck 圖片本地瀏

JavaPHP兩種方式實現圖片到新浪微博的圖床

這幾天遇到一個需求,需要將圖片上傳到新浪微博的圖傳,研究了一下, 特此記錄1.模擬登陸,獲取cookie登入地址為:https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=140313

javascript實現下載

使用easyui進行檔案上傳 HTML程式碼 <form id ="uploadform" style="display:inline-flex;">

(轉)ASP.NET(C#)FileUpload實現限定類型大小的文到服務器

web 環境 posted using 結果 ring event run ont 上傳文件有兩個主要的目的地,一個是服務器,另一個是數據庫,ASP.NET內置了FileUpload這個上傳控件,文本框顯示用戶選擇的文件的全名. 其屬性主要包括: ContenLength:

springmvc實現下載

transfer try .com print frame row 快捷鍵 oid inpu 非常簡單的小例子,註釋的很清楚。話不多少,看代碼 FileController.java package com.imooc; import org.apache

簡單的PHP圖片刪除圖片示例程式碼

分享一例簡單的PHP上傳圖片和刪除圖片示例程式碼,很簡單,適合初學的朋友參考,用來研究php上傳圖片還是不錯的。 <?phpif (!empty($_FILES["img"]["name"])) { //提取檔案域內容名稱,並判斷$path=”uppic/”; //上傳路徑if(!file_exist

使用資料庫javabean實現與下載

首先,我是部分參考網址,其中寫的最好的莫過於https://blog.csdn.net/a15920804969/article/details/78497668 總體構造圖       (1)domain file.java

PHP(Thinkphp5)實現更換圖片

問題引入:  當點選修改時(前端傳值問題在這不多說,這裡主要講解後臺上傳,前臺傳值問題請參考我的上一篇部落格:https://blog.csdn.net/qq_40820862/article/details/83683980),使圖片發生替換.  

PHP大檔案分片實現方法

一、前言 在網站開發中,經常會有上傳檔案的需求,有的檔案size太大直接上傳,經常會導致上傳過程中耗時太久,大量佔用頻寬資源,因此有了分片上傳。 分片上傳主要是前端將一個較大的檔案分成等分的幾片,標識當前分片是第幾片和總共幾片,待所有的分片均上傳成功的時候,在後臺進行合成檔案即可。 二、

Windows 的java客戶端實現檔案到Linux的Hadoop叢集(注意ip埠是否一致)

我這幾天一直在學大資料,處於入門階段,然後老師的視訊中教學有用windows的java客戶端上傳檔案到Linux的Hadoop叢集, 但是這邊出BUG了一直上傳不上去,執行程式後一直沒反應。。。。弄了幾天(雖然這幾天在做前端專案~~~) 然後問群裡的大佬,他們說應該是ip和埠

如何使用elementUI呼叫一次介面同時圖片檔案,同時需要攜帶其他引數,實現呼叫後端介面

今天有一個坑,同時要上傳圖片和檔案,而且圖片要展示縮圖,檔案要展示列表。 我的思路是: 首先,只上傳附件照片,這個直接看ele的官方例子就行,不僅僅上傳附件照片,還同時上傳其他引數。 然後,再做上傳照片和檔案,上傳其他引數,其實也就是檔案合併。   一、上傳照片和其他引

PHP(Thinkphp)實現更換圖片

問題引入: 例項解決思路: 由於上傳的圖片都指定在伺服器上的某個目錄,然後資料庫中記錄連結這個圖片的"連結",所以 1.先獲取前端傳入的id值和圖片 2.判斷是否選中了圖片才點選的上傳. 3.進行檔案上傳,選擇上傳目錄 4.獲取到上傳的檔案目錄(可用字串

vue html jq 實現圖片顯示在頁面預覽

1、html程式碼 <img src="" alt="" id="myimg"> <input type="file" name="fileToUpload" id="fileToU