PHP——圖片上傳

来源:http://www.cnblogs.com/piziyu/archive/2016/04/24/5428828.html
-Advertisement-
Play Games

圖片上傳 Index.php文件代碼: upload.php代碼: 圖片上傳步驟: 1:接收參數 2:判斷錯誤 3:判斷格式是否合法 4:判斷文件大小 5:判斷是是不是真正的圖片 6:判斷是否是http post提交 文件上傳 Index.php文件代碼: <!DOCTYPE html> <html ...


圖片上傳

 

Index.php文件代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="upload2.php" method="post" enctype="multipart/form-data">
    <input type="file" name='file'>
    <input type="submit" value="上傳">
    </form>
</body>
</html>

upload.php代碼:

圖片上傳步驟:

1:接收參數

         2:判斷錯誤

         3:判斷格式是否合法

         4:判斷文件大小

         5:判斷是是不是真正的圖片

 

         6:判斷是否是http post提交

<?php 
    include('../function.php');

    //接受參數
    $file=$_FILES['file'];
    $name=$file['name'];
    $type=$file['type'];
    $tmp_name=$file['tmp_name'];
    $error=$file['error'];
    $size=$file['size'];
    $path='../images/';
    
    //判斷錯誤
    if($error==UPLOAD_ERR_OK){
        // exit('上傳成功');
        //判斷格式是否合法
        $format=array('jpeg','jpg','png','gif');
        $ext=format($name);
        if(!in_array($ext,$format)){
            exit('圖片格式不正確');
        }
        //判斷文件大小
        $allowSize=1048576;            //1M
        if($size>$allowSize){
            exit('圖片過大');
        }
        //判斷是不是圖片
        $imgSize=getimagesize($tmp_name);
        if(!$imgSize){
            exit('這不是一個圖片');
        }
        //判斷是不是通過http post上傳
          if(is_uploaded_file($tmp_name)){
       if(!file_exists($path)){
          mkdir($path,0777,true);
          chmod($path,0777);
       }
       $newName = getUniqidName().".".$Ext;
       $dstpath = $path.'/'.$newName;
          if(move_uploaded_file($tmp_name,$dstpath)){
          echo $newName;
          }else{
                exit('圖片上傳失敗');
          }
   }else{
        exit('不是HTTP POST方式提交');
   }
    }else{
        switch ($error) {
            case '1':
                exit('文件大小超過限定值');
                break;
            
            case '2':
                exit('文件大小超過了表單配置大小');
                break;
            case '3':
                exit('文件只有部分被上傳');
                break;
            case '4':
                exit('沒有文件被上傳');
                break;
            case '6':
                exit('沒有找到緩存目錄');
                break;
            case '7':
                exit('目錄不可寫');
                break;
            case '8':
                exit('PHP擴展程式阻止了文件上傳');
                break;
        }
    }

    //取文件尾碼函數
    function format($name){
        $ext=explode('.',$name);
        $val=end($ext);
        return $val;
    }
    function getUniqidName(){
           return md5(uniqid(microtime(true),true));
    }

 ?>

 

文件上傳

Index.php文件代碼:

<!DOCTYPE html>

<html lang="en">

<head>

         <meta charset="UTF-8">

         <title>Document</title>

</head>

<body>

         <form action="upload2.php" method="post" enctype="multipart/form-data">

         <input type="file" name='file'>

         <input type="submit" value="上傳">

         </form>

</body>

</html>

 

upload.php代碼:

圖片上傳步驟:

1:接收參數

         2:判斷錯誤

         3:判斷格式是否合法

         4:判斷文件大小

         5:判斷是是不是真正的圖片

         6:判斷是否是http post提交

代碼:

<?php

         include('../function.php');

 

         //接受參數

         $file=$_FILES['file'];

         $name=$file['name'];

         $type=$file['type'];

         $tmp_name=$file['tmp_name'];

         $error=$file['error'];

         $size=$file['size'];

         $path='../images/';

        

         //判斷錯誤

         if($error==UPLOAD_ERR_OK){

                   // exit('上傳成功');

                   //判斷格式是否合法

                   $format=array('jpeg','jpg','png','gif');

                   $ext=format($name);

                   if(!in_array($ext,$format)){

                            exit('圖片格式不正確');

                   }

                   //判斷文件大小

                   $allowSize=1048576;                          //1M

                   if($size>$allowSize){

                            exit('圖片過大');

                   }

                   //判斷是不是圖片

                   $imgSize=getimagesize($tmp_name);

                   if(!$imgSize){

                            exit('這不是一個圖片');

                   }

                   //判斷是不是通過http post上傳

                     if(is_uploaded_file($tmp_name)){

       if(!file_exists($path)){

          mkdir($path,0777,true);

          chmod($path,0777);

       }

       $newName = getUniqidName().".".$Ext;

       $dstpath = $path.'/'.$newName;

        if(move_uploaded_file($tmp_name,$dstpath)){

          echo $newName;

        }else{

            exit('圖片上傳失敗');

        }

   }else{

      exit('不是HTTP POST方式提交');

   }

         }else{

                   switch ($error) {

                            case '1':

                                     exit('文件大小超過限定值');

                                     break;

                           

                            case '2':

                                     exit('文件大小超過了表單配置大小');

                                     break;

                            case '3':

                                     exit('文件只有部分被上傳');

                                     break;

                            case '4':

                                     exit('沒有文件被上傳');

                                     break;

                            case '6':

                                     exit('沒有找到緩存目錄');

                                     break;

                            case '7':

                                     exit('目錄不可寫');

                                     break;

                            case '8':

                                     exit('PHP擴展程式阻止了文件上傳');

                                     break;

                   }

         }

 

         //取文件尾碼函數

         function format($name){

                   $ext=explode('.',$name);

                   $val=end($ext);

                   return $val;

         }

         function getUniqidName(){

               return md5(uniqid(microtime(true),true));

         }

 

 ?>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 程式中需USE COMOBJ單元 1.Q:如何得到機器上IIS中所有的WEB虛擬站點. A: var InstallPath: String; WebSite, WebServer, WebRoot: Variant; count: Integer; Flag: Boolean; begin Fla ...
  • 本文目的 PHP的全局錯誤處理,在開發項目的時候很有用,可以幫助開發者快速定位一些問題,提高工作效率。預設情況下,全局錯誤會直接輸出,但是最近開發時使用的一個框架庫對全局錯誤處理進行了設定,導致很多錯誤信息沒有輸出,在定位問題上有一定的耗時。所以,研究了一下此庫的實現,發現它設定了error_rep ...
  • 什麼是Queue集合? 答:Queue用於模擬隊列這種數據結構。隊列通常是指“先進先出(FIFO)”的容器。隊列的頭部保存在隊列中存放時間最長的元素,尾部保存存放時間最短的元素。新元素插入到隊列的尾部,取出元素會返回隊列頭部的元素。通常,隊列不允許隨機訪問隊列中的元素。 Queue介面中定義瞭如下的 ...
  • “這裡要用char類型”; “這裡要用int類型”; “其實實現這個方法只需要把另一個方法的返回值的類型和傳入參數的類型改成float類型就實現了”; “其實這個演算法只需要把以前寫的那個稍微改動一下就行了”; ……………… 學過面向對象語言的都知道GP這個概念,就是泛型程式設計,說的再明白點就是編寫 ...
  • Java併發編程系列【未完】: Java 併發編程:核心理論 Java併發編程:Synchronized及其實現原理 Java併發編程:Synchronized底層優化(輕量級鎖、偏向鎖) 一、重量級鎖 上篇文章中向大家介紹了Synchronized的用法及其實現的原理。現在我們應該知道,Synch ...
  • 微信支付介面文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 首先你得知道這個jsapi是不能離開微信進行調用支付的,明白了這個道理我們好下手,頁面是在微信內顯示並通過jsapi調用微信支付組件進行支付。 可以看看我們上一 ...
  • 下載頁: http://www.rabbitmq.com/install-standalone-mac.html 1、下載頁面首部的文件(頁面下載可能比較慢,使用迅雷下載就好),之後解壓到一個合適的路徑(例如:/Users/enniu1/Desktop/zjg/)。 2、配置命令訪問路徑 cd ~ ...
  • 上一篇文末,提到非虛擬介面 NVI 的實現,即將虛函數聲明為保護型或私有型,藉由模板函數模式來實現 。 園友 @KillU 看的很仔細,提出了一個問題:虛函數是 private 類型,繼承可以麽? 答案是:完全可以 5 實現權和調用權 <Effective C++> 中給的解釋是: 重寫一個虛函數, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...