之前曾經(jīng)寫過(guò)一個(gè)php接收?qǐng)D片的文章,但是感覺很亂,不規(guī)律。最近看了ThinkPhp框架,ThinkPhp的MVC結(jié)構(gòu)十分清晰,其中還封裝了文件上傳類,數(shù)據(jù)庫(kù)相關(guān)東西,十分好用。于是在畢設(shè)中決定采用ThinkPhp來(lái)寫接口。
一、單文件上傳。
-
客戶端代碼基本一致,只修改了服務(wù)端,采用了ThinkPhp接收。
//客戶端的key為user_head if ($_FILES['user_head']['error'] === 0) { // 這是thinkPhp中Upload.class.php中的一些參數(shù)配置,其中都有注釋,根據(jù)自己需求自己配置。 $cfg = array( 'rootPath' => './Public/user_head/', //保存根路徑 'autoSub' => false, //自動(dòng)子目錄保存文件 'saveName' => $_FILES['user_head']['name'], //文件名 'saveExt' => 'jpg' //文件保存后綴,空則使用原后綴 ); // 設(shè)置附件的存儲(chǔ)位置 $upload = new Upload($cfg); // 上傳文件 $z = $upload->uploadOne($_FILES['user_head']); if (! $z) { // 上傳錯(cuò)誤提示錯(cuò)誤信息 echo $this->error($upload->getError()); } // 圖片路徑 $img_url = "IP地址" . $upload->rootPath . $z['savename']; //后續(xù)可以將url存入數(shù)據(jù)庫(kù)
二、多文件上傳
多文件上傳采用循環(huán)遍歷,唯一不同的是客戶端采用“一key多value”上傳。
客戶端的key為"images[]";(上傳兩張圖片)
服務(wù)端接收 $files = $_FILES['images'];
通過(guò)var_dump打印結(jié)果發(fā)現(xiàn)為
array(5) {
["name"]=>
array(2) {
[0]=>
string(31) "com_eg_android_AlipayGphone.png"
[1]=>
string(20) "com_student_aynu.png"
}
["type"]=>
array(2) {
[0]=>
string(9) "image/png"
[1]=>
string(9) "image/png"
}
["tmp_name"]=>
array(2) {
[0]=>
string(24) "C:\xampp\tmp\phpB784.tmp"
[1]=>
string(24) "C:\xampp\tmp\phpB785.tmp"
}
["error"]=>
array(2) {
[0]=>
int(0)
[1]=>
int(0)
}
["size"]=>
array(2) {
[0]=>
int(6584)
[1]=>
int(34205)
}
}
這并不是我們想要的格式
我們想要的格式為:
Array
(
[0] => Array
(
[name] => com_eg_android_AlipayGphone.png
[type] => image/png
[tmp_name] => C:\xampp\tmp\phpB784.tmp
[error] => 0
[size] => 6584
)
[1] => Array
(
[name] => com_student_aynu.png
[type] => image/png
[tmp_name] => C:\xampp\tmp\phpB785.tmp
[error] => 0
[size] => 34205
)
)
其中需要轉(zhuǎn)化一下,轉(zhuǎn)換的代碼為(key,value 換一下)
function reArrayFiles($file_post)
{
$file_ary = array();
$file_count = count($file_post['name']);
$file_keys = array_keys($file_post);
for ($i = 0; $i < $file_count; $i ++) {
foreach ($file_keys as $key) {
$file_ary[$i][$key] = $file_post[$key][$i];
}
}
return $file_ary;
}
后面循環(huán)上傳就可以了。

上傳成功

保存入庫(kù)