PHP上傳圖片功能實現(xiàn)

這幾天整理做過的php項目,感覺這個經(jīng)常會用到凹炸,傳上來共享一下咯
首先戏阅,前端界面
1、表單的首行需要加上enctype="multipart/form-data"啤它,需要上傳的圖片必須設置 type="file"表示選擇文件

<form id="img_form" method="post" class="form-horizontal" role="form" enctype="multipart/form-data">
     <label class="col-sm-3 control-label" for="image">圖片:</label>
        <div class="col-sm-9 require">
            <input type="hidden" name="MAX_FILE_SIZE" value="2000000">//文件最大尺寸
            <input type="file" class="form-control" name="image" id="image">
        </div>
    </div>
  </form>

2奕筐、為表單添加事件,我用的是ajax
因為圖片在是二進制傳輸变骡,所以需要用new FormData(this)獲取表單非文本類的數(shù)據(jù)(注包括文本類)离赫,純文本類數(shù)據(jù)可用$(this).serialize();

$('#form1').submit(function (e) {
    e.preventDefault();
     var data=new FormData(this);//獲取非文本類的數(shù)據(jù)
     $.ajax({
         url:"php/add.php",//處理頁面的路徑
         data:data,//通過json格式將一組數(shù)據(jù)傳過去
         type:"post",//數(shù)據(jù)的提交和傳遞方式塌碌,最好用POST
         dataType:"json",//頁面返回值的類型渊胸,共有三種:TEXT,JSON,XML可選
         cache:false,
         contentType:false,
         processData:false,
         success:function(res){//回調(diào)函數(shù):如果ajax調(diào)用成功,就執(zhí)行這個success后面的函數(shù)台妆,(data)當做參數(shù)返回過來
             if (res.flag===1){
                 alert('上傳成功蹬刷!');
             } else if(res.flag===2){
                 alert('網(wǎng)絡或其他未知錯誤瓢捉,請重試!')
             }else{
                 alert('圖片格式錯誤办成,請重試泡态!')
             }
         },
         error: function () {
             alert("error")
         }
     });
 });

3、編寫php文件
connect.php
數(shù)據(jù)庫連接文件

<?php
$link=new PDO("mysql:host=localhost;port=3306;dbname=db","root","");
$link->query("set names utf8");

add.php

  • extract($_POST):批量獲取前端post方式傳過來的數(shù)據(jù)迂卢,使用參數(shù)時參數(shù)名為前端傳過來的初始名某弦。

  • in_array(search,array,type):搜索數(shù)組中是否存在指定的值,即元素是否存在與數(shù)組而克,返回true或false靶壮。
    search,必需员萍,規(guī)定要在數(shù)組搜索的值腾降。array,必需碎绎,規(guī)定要搜索的數(shù)組螃壤。type,可選筋帖,如果設置該參數(shù)為 true奸晴,則檢查搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同。

  • count():獲取數(shù)組元素個數(shù)

  • $_FILES['image']['name']:'image'為前端圖片定義的name日麸,后面的'name'不可變
  • file_exists():檢查圖片是否存在文件夾寄啼,存在返回ture,否則false
    -upload:是我圖片上傳目標文件

<?php
extract($_POST);
$date = date('Y-m-d');
$file_name = $_FILES['image']['name'];//獲取緩存區(qū)圖片,格式不能變
$type = array("jpg", "gif", 'png', 'bmp');//允許選擇的圖片類型
$ext = explode(".", $file_name);//拆分獲取圖片名
$ext = $ext[count($ext) - 1];//取圖片的后綴名
if (in_array($ext,$type)){
    do{
        $new_name = get_file_name(6).'.'.$ext;
        $path='upload/'.$new_name;//upload為目標文件夾
    }while (file_exists("../" . $path));//檢查圖片是否存在文件夾,存在返回ture,否則false
    $temp_file=$_FILES['image']['tmp_name'];//獲取服務器里圖片
    include_once ('connect.php');//連接數(shù)據(jù)庫
    $result = $link->exec("INSERT INTO `news`(`title`,`author`, `content`, `src`,`time`) VALUES ('$title','$author','$content','$path','$date')");
    if ($result){
        move_uploaded_file($temp_file,"../" .$path);//移動臨時文件到目標路徑
        $arr['flag']=1;
        $arr['detail']=[$title,$author,$content,$path];
    }else{
        $arr['flag']=2;
    }
}else{
    $arr['flag']=3;
}
function get_file_name($len)//獲取一串隨機數(shù)字代箭,用于做上傳到數(shù)據(jù)庫中文件的名字
{
    $new_file_name = 'A_';
    $chars = "1234567890qwertyuiopasdfghjklzxcvbnm";//隨機生成圖片名
    for ($i = 0; $i < $len; $i++) {
        $new_file_name .= $chars[mt_rand(0, strlen($chars) - 1)];
    }
    return $new_file_name;
}
echo json_encode($arr);
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墩划,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗡综,更是在濱河造成了極大的恐慌乙帮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛤高,死亡現(xiàn)場離奇詭異,居然都是意外死亡碑幅,警方通過查閱死者的電腦和手機戴陡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沟涨,“玉大人恤批,你說我怎么就攤上這事」埃” “怎么了喜庞?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵诀浪,是天一觀的道長。 經(jīng)常有香客問我延都,道長雷猪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任晰房,我火速辦了婚禮求摇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘殊者。我一直安慰自己与境,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布猖吴。 她就那樣靜靜地躺著摔刁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪海蔽。 梳的紋絲不亂的頭發(fā)上共屈,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音准潭,去河邊找鬼趁俊。 笑死,一個胖子當著我的面吹牛刑然,可吹牛的內(nèi)容都是我干的寺擂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼泼掠,長吁一口氣:“原來是場噩夢啊……” “哼怔软!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起择镇,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤挡逼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腻豌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體家坎,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年吝梅,在試婚紗的時候發(fā)現(xiàn)自己被綠了虱疏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡苏携,死狀恐怖做瞪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤装蓬,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布著拭,位于F島的核電站,受9級特大地震影響牍帚,放射性物質(zhì)發(fā)生泄漏儡遮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一履羞、第九天 我趴在偏房一處隱蔽的房頂上張望峦萎。 院中可真熱鬧,春花似錦忆首、人聲如沸爱榔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽详幽。三九已至,卻和暖如春浸锨,著一層夾襖步出監(jiān)牢的瞬間唇聘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工柱搜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迟郎,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓聪蘸,卻偏偏與公主長得像宪肖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子健爬,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5控乾? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 27,449評論 1 45
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程娜遵,因...
    小菜c閱讀 6,365評論 0 17
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化蜕衡,入門級到專家級,廣度和深度都會有所增加设拟。 題目類型: 理論知...
    怡寶丶閱讀 2,572評論 0 7
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,125評論 0 3
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的慨仿,因此網(wǎng)頁是網(wǎng)絡信息傳遞的載體。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,871評論 0 0