真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ajax結(jié)合文件上傳類進(jìn)行多文件的單個(gè)上傳

今天做項(xiàng)目的時(shí)候碰見(jiàn)一個(gè)問(wèn)題:之前一個(gè)同事離職之前做了一個(gè)網(wǎng)站,有一個(gè)上傳商品詳細(xì)圖片的功能,當(dāng)時(shí)已經(jīng)完成,但是由于后期程序的有更改以及更改的程序員的水平也是參差不齊,最后導(dǎo)致程序bug很多,由于當(dāng)時(shí)用的是一個(gè)框架,最終也沒(méi)找到說(shuō)明文檔,后來(lái)我就重新寫(xiě)了一個(gè)結(jié)合ajax上傳文件的upload.classs.php雖然界面欠缺美觀,但是通俗易懂好維護(hù).

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括恩陽(yáng)網(wǎng)站建設(shè)、恩陽(yáng)網(wǎng)站制作、恩陽(yáng)網(wǎng)頁(yè)制作以及恩陽(yáng)網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,恩陽(yáng)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到恩陽(yáng)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

//首先是頁(yè)面.

index.php

upload

    

//接收前臺(tái)ajax的頁(yè)面

upload.php

include_once 'Upload.class.php';

$obj=new Upload('uploads',array('.jpg'),3145728,'file');

$arr=$obj->uploadFiles();

if(is_array($arr))

{

echo json_encode($arr);

}

else

{

echo $arr;

}

 ?>

//簡(jiǎn)單的文件上傳類

upload.class.php

//文件上傳類

class Upload{

private $path;       //上傳路徑

private $allowtype=array();  //資源類型

private $maxsize;    //允許上傳的文件大小

private $file;       //file表單的name

private $error=1;      //定義路徑不存在的錯(cuò)誤

//構(gòu)造方法

public function __construct($path,$allowtype,$maxsize,$file)

{

$this->path      = $path;

//首先檢查文件路徑是否存在

if(!file_exists($this->path))

{

$this->error=0;

// exit('ERROR:文件路徑不存在!');

}

$this->allowtype = $allowtype;

$this->maxsize   = $maxsize;

$this->file      = $file;

}

//上傳一個(gè)資源的方法

public function uploadFiles()

{

if($this->error==0)

{

return 0;

}

//首先判斷系統(tǒng)是否允許上傳,以及有沒(méi)有出現(xiàn)error

$eor= $_FILES[$this->file]['error'];

if($eor!=0)

{

return 1;//異步傳輸專用

// exit("ERROR:錯(cuò)誤編號(hào):{$eor}!");

}

//判斷文件的擴(kuò)展名

$suf= strrchr($_FILES[$this->file]['name'],'.');

if(!in_array($suf,$this->allowtype))

{

return 2;

// exit('ERROR:文件類型被拒絕!');

}

//判斷文件的大小

$size= $_FILES[$this->file]['size'];

if($size>$this->maxsize)

{

return 3;

// exit('ERROR:文件過(guò)大!');

}

/*當(dāng)滿足上面所有的條件的時(shí)候,進(jìn)行文件上傳

并且返回資源的絕對(duì)路徑

相對(duì)路徑

以及文件名*/

$tempname = $_FILES[$this->file]['tmp_name'];

date_default_timezone_set('PRC'); 

$newname  = date('YmdHis').'-'.mt_rand(100,999).$suf;

$rootpath=dirname(__FILE__).'/'.$this->path.'/'.$newname;

if(move_uploaded_file($tempname,$this->path.'/'.$newname))

{

return array('picname'=>$newname,'picpath'=>$rootpath,'relpicpath'=>$this->path.'/'.$newname);

}

}

}

 ?>

//前臺(tái)頁(yè)面提交表單后的入庫(kù)頁(yè)面

model.php

$dbh=new PDO('MySQL:host=localhost;dbname=test;','root','');

$dbh->exec('set names utf8');

$_POST['picpath']=addslashes(str_replace('/', '\\', $_POST['picpath']));

$sql="insert into mytab (picname,picpath,relpicpath) values

('$_POST[picname]','$_POST[picpath]','$_POST[relpicpath]')";

$info=$dbh->exec($sql);

 ?>

//解釋:頁(yè)面非常的簡(jiǎn)單,當(dāng)然這是測(cè)試用的.

    邏輯過(guò)程:

    1.前臺(tái)頁(yè)面index.php:第一個(gè)表單專門(mén)用來(lái)添加圖片.通過(guò)change事件觸發(fā)當(dāng)前表單提交事件.

    2.在提交的upload.php頁(yè)面中,引入upload.class.php.通過(guò)數(shù)字注釋可以得到每個(gè)不同的錯(cuò)誤返回(在index.php中頁(yè)面底部的js部分),當(dāng)上傳成功的時(shí)候返回圖片的絕對(duì)地址(更新或者刪除數(shù)據(jù)的時(shí)候以便刪除沒(méi)用的圖片),圖片的名稱,以及圖片的相對(duì)地址(頁(yè)面展示使用).

    3.upload.class.php的返回值通過(guò)upload.php進(jìn)行進(jìn)一步的判斷,如果是數(shù)組說(shuō)明上傳成功,如果是單個(gè)的數(shù)字,說(shuō)明上傳失敗.并且將信息返回給前臺(tái).

    4.index.php接收到upload.php返回的信息,如果為單個(gè)數(shù)字的話,進(jìn)行相應(yīng)的錯(cuò)誤提醒.如果是一個(gè)json格式的數(shù)據(jù),那個(gè)通過(guò)$.parseJSON將其轉(zhuǎn)變成json對(duì)象,并且在下面的js代碼中進(jìn)行調(diào)用. 分別為:在頁(yè)面的第二個(gè)form表單中創(chuàng)建input:hidden,將所需要的信息存儲(chǔ)起來(lái)以便在提交表單的時(shí)候進(jìn)行使用.同時(shí)這里也做了一個(gè)判斷,如果第二個(gè)form表單中已經(jīng)存在樂(lè)hidden說(shuō)明已經(jīng)不是第一張圖片了,所以直接將之后的圖片拼接在hidden的value后面.同時(shí),如果成功的話在id為pics的div中會(huì)出現(xiàn)100*100縮略圖.

    5.最后在index.php中點(diǎn)擊submit提交所有的圖片信息準(zhǔn)備入庫(kù).在model.php中,直接實(shí)例化了pdo,寫(xiě)了一條sql語(yǔ)句進(jìn)行了測(cè)試,結(jié)果沒(méi)有問(wèn)題.

    

    注意:index.php中要引入:jquery.form.js

            在model.php中addslashes()函數(shù)很重要,在數(shù)據(jù)庫(kù)中單獨(dú)的一條斜線"\"在我本次的測(cè)試中在數(shù)據(jù)庫(kù)中這條斜線就不見(jiàn)了.之前也碰掉類似的問(wèn)題,當(dāng)時(shí)是沒(méi)有插入進(jìn)去.所以在這里進(jìn)行一次轉(zhuǎn)義.

    到此整個(gè)過(guò)程完成.

    作為一個(gè)php新人,希望在這里和大家共同進(jìn)步,這個(gè)程序可能安全行,性能什么的我都沒(méi)有考慮到,用起來(lái)可能也有一定的局限性.希望大家多多指點(diǎn).


當(dāng)前題目:ajax結(jié)合文件上傳類進(jìn)行多文件的單個(gè)上傳
本文地址:http://weahome.cn/article/poepes.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部