圖片上傳與文件上傳在php中都是一樣直接使用move_uploaded_file($_FILES["filename"]["tmp_name"]就可以實現了,下面我來給大家分享一個站長分享文件上傳例子.
前期需要了解的知識點:
move_uploaded_file()文件上傳函數,代碼如下:
- if(move_uploaded_file($_FILES["filename"]["tmp_name"])
- {
- echo '文件上傳成功';
- }
$_FILES php全局變量
$_FILES:經由 HTTP POST 文件上傳而提交至腳本的變量,類似于舊數組 $HTTP_POST_FILES 數組,依然有效,但反對使用,代碼如下:
$_FILES['myFile']['name'] 客戶端文件的原名稱。
$_FILES['myFile']['type'] 文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節。
$_FILES['myFile']['tmp_name'] 文件被上傳后在服務端儲存的臨時文件名,一般是系統默認。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函數設置是不起作用的。
$_FILES['myFile']['error'] 和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以后成了常量)
UPLOAD_ERR_OK 值:0; 沒有錯誤發生,文件上傳成功。
UPLOAD_ERR_INI_SIZE 值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
UPLOAD_ERR_FORM_SIZE 值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上傳。
UPLOAD_ERR_NO_FILE 值:4; 沒有文件被上傳。 值:5; 上傳文件大小為0.
核心文件,upimg.htm,代碼如下:
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>上傳圖片</title>
- <script language="javascript">
- function $(id){
- return document.getElementById(id);
- }
- function ok(){
- $("logoimg").src = $("filename").value;
- }
- </script>
- </head>
- <body>
- <table border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td height="45" align="center" valign="middle">
- <form action="uploadf.php?submit=1" method="post" enctype="multipart/form-data" name="form1"> 請選擇上傳的圖片
- <input type="file" name="filename" id="filename" onchange="ok()">
- <!-- MAX_FILE_SIZE must precede the file input field -->
- <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
- <input type="submit" name="Submit" value="上傳">
- </form>
- </td>
- </tr>
- </table>
- <font color="red">注意:請上傳120*45像素的GIF或者jpg格式的logo圖片</font><br/>
- logo預覽:<img id="logoimg" src="images/bg-02.gif"/>
- </body>
- </html>
- uploadf.php
- <?php
- if(!emptyempty($_GET[submit]))
- {
- $path="uploadfiles/pic/"; //上傳路徑
- //echo $_FILES["filename"]["type"];
- if(!file_exists($path))
- {
- //檢查是否有該文件夾,如果沒有就創建,并給予最高權限
- mkdir("$path", 0700);
- }//END IF
- //允許上傳的文件格式
- $tp = array("image/gif","image/pjpeg","image/png");
- //檢查上傳文件是否在允許上傳的類型
- if(!in_array($_FILES["filename"]["type"],$tp))
- {
- echo "格式不對";
- exit;
- }//END IF
- if($_FILES["filename"]["name"])
- {
- $file1=$_FILES["filename"]["name"];
- $file2 = $path.time().$file1;
- $flag=1;
- }//END IF
- if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
- //特別注意這里傳遞給move_uploaded_file的第一個參數為上傳到服務器上的臨時文件
- if($result)
- {
- //echo "上傳成功!".$file2;
- echo "<script language='javascript'>";
- echo "alert(\"上傳成功?。?/span>");";
- //echo " location='add_aaa.php?pname=$file2'";
- echo "</script>";
- echo("<input type=\"button\" name=\"Submit\" value=\"確定\" onClick=\"window.opener.setFile('".$file2."');window.close();\">");
- echo "圖片名稱:".$file2;
- }//END IF
- } else {
- echo "file is null!";
- }
- ?>
調用示例文件,testUpload.htm,代碼如下:
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>上傳圖片</title>
- <script>
- function setFile(f1){
- document.frm.logoImg.value=f1;
- }
- </script>
- </head>
- <body>
- <table border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td height="45" align="center" valign="middle">
- <form action="#" method="post" name="frm"> 請選擇上傳的圖片
- <input name="regAd.logoImg" id="logoImg" type="text" size="30"/>
- <label style="cursor:hand" onClick="window.open('upimg.htm','上傳圖片','height=200,width=400,top=200,left=200')">上傳圖片</label><br/>
- </form>
- </td>
- </tr>
- </table>
- </body>
- </html>
此程序不足之處分析,上傳預覽功能,代碼如下:
- function $(id){
- return document.getElementById(id);
- }
- function ok(){
- $("logoimg").src = $("filename").value;
- }//開源軟件:Vevb.com
這段代碼其實就是一個雞肋了,在有一些瀏覽器下是不兼容了,但不會影響到圖片上傳功能.
程序安全:對于在上傳處我們并未進行數據大小限制與程序上傳文件類型進行限制,這樣可以利用它來上傳一些像php文件,這樣你的網站就不安全了.
新聞熱點
疑難解答