jsnlib / upload
1.2.4
2018-09-18 06:11 UTC
Requires
- php: >=7.0.0
- jsnlib/rand: >=1.0.0
README
簡單快速的上傳檔案
方法一、自動上傳,系統自動命名
- 先建立表單,並指定 input 屬性為 multiple
<form method="post" enctype="multipart/form-data" action=""> <div>訣竅:無論單比或多筆都使用name="upl[]"</div> <div><input name="upl[]" type="file" multiple></div> <div><input name="go" type="submit" value="送出"></div> </form>
- Server
require_once 'vendor/autoload.php'; $U = new \Jsnlib\Upload; try { if (isset($_POST['go'])) { $inputname = "upl"; //設定input file 的名稱, upl代表了 name="upl[]" $U->filename = $inputname; //input name屬性的陣列名稱 $U->arraykey = 0; //input name陣列鍵值(起始值) $U->could_secondname = "jpg"; //允許副檔名 $U->pathaccess = "0777"; //路徑權限 $U->size = 5; //MB $U->site = "images"; //上傳路徑,結尾口有可無 / $U->resizeImageScriptPath = "../plugin/ImageResize.php"; //套件ImageResize 路徑 (可相對於class jsnupload 的位置) $U->resize_width = 400; //若要不同的size就在下方each的時候再填寫即可 $U->resize_height = 400; $U->resize_quality = 100; //JPG壓縮品質 $result = $U->fileupload( [ 'prefix' => 'MY', 'url' => 'http://localhost/jsnlib/Upload/Demo', 'sizelist' => [ [ 'size' => "s", 'width' => 150, 'height' => 150 ], [ 'size' => "m", 'width' => 800, 'height' => 800 ] ] ]); print_r($result); die; } } catch (Exception $e) { echo $e->getMessage(); die; }
- 上傳後會得到結果如
Array ( [0] => Array ( [s] => Array ( [filename] => MY_GFXD_1522376456_s.jpg [path] => images/MY_GFXD_1522376456_s.jpg [url] => http://localhost/jsnlib/Upload/Demo/images/MY_GFXD_1522376456_s.jpg ) [m] => Array ( [filename] => MY_GFXD_1522376456_m.jpg [path] => images/MY_GFXD_1522376456_m.jpg [url] => http://localhost/jsnlib/Upload/Demo/images/MY_GFXD_1522376456_m.jpg ) ) )
方法二、手動上傳,並可自行指定對應命名
- 先建立表單,name 的部分命名為陣列
<form method="post" enctype="multipart/form-data" action=""> <div>訣竅:無論單比或多筆都使用name="upl[]"</div> <div><input name="upl[]" type="file" multiple></div> <div><input name="upl[]" type="file" multiple></div> <div><input name="go" type="submit" value="送出"></div> </form>
- Server
require_once '../vendor/autoload.php'; $U = new \Jsnlib\Upload; /** * 手動上傳,並可自行指定對應命名 */ try { if (isset($_POST['go'])) { $inputname = "upl"; //設定input file 的名稱, upl代表了 name="upl[]" $U->filename = $inputname; //input name屬性的陣列名稱 $U->arraykey = 0; //input name陣列鍵值(起始值) $U->could_secondname = "jpg"; //允許副檔名 $U->pathaccess = "0777"; //路徑權限 $U->size = 5; //MB $U->site = "images"; //上傳路徑,結尾口有可無 / $U->resizeImageScriptPath = "../plugin/ImageResize.php"; //套件ImageResize 路徑 (可相對於class jsnupload 的位置) $U->resize_width = 400; //若要不同的size就在下方each的時候再填寫即可 $U->resize_height = 400; $U->resize_quality = 100; //JPG壓縮品質 //$val為原始上傳的文件名稱,若要將檔名使用原始檔名,建議配合uniqid() foreach ($_FILES[$inputname]["name"] as $val) { if ($U->isnextkey($val)) continue; //不限數量 (遇到未指定的就換下一個<input>) //開始上傳 //小 $newname_s = uniqid(date("YmdHis_")). "_s.".$U->scandN(1); $U->resize_width = 150; $U->resize_height = 150; $U->fileupload_multi($newname_s, $U->arraykey, 1, "retain"); //中 $newname_m = uniqid(date("YmdHis_")). "_m.".$U->scandN(1); $U->resize_width = 400; $U->resize_height = 400; $U->fileupload_multi($newname_m, $U->arraykey, 1, "retain"); //大 $newname_b = uniqid(date("YmdHis_")). "_b.".$U->scandN(1); $U->resize_width = 1280; $U->resize_height = 1280; $U->fileupload_multi($newname_b, $U->arraykey, 1, "clean"); ?> 小: <a href="<?=$U->site . $newname_s?>"><?=$U->site . $newname_s?></a><br> 中: <a href="<?=$U->site . $newname_m?>"><?=$U->site . $newname_m?></a><br> 大: <a href="<?=$U->site . $newname_b?>"><?=$U->site . $newname_b?></a><br> <? } die; } } catch (Exception $e) { echo $e->getMessage(); die; }
- 顯示的結果為
小: images/20180330042504_5abda000b0511_s.jpg 中: images/20180330042504_5abda000bcca5_m.jpg 大: images/20180330042504_5abda000cdfa5_b.jpg 小: images/20180330042504_5abda000e4d3f_s.jpg 中: images/20180330042505_5abda00131744_m.jpg 大: images/20180330042505_5abda0017b51b_b.jpg