jsnlib/upload

1.2.4 2018-09-18 06:11 UTC

This package is auto-updated.

Last update: 2024-04-29 03:53:45 UTC


README

簡單快速的上傳檔案

方法一、自動上傳,系統自動命名

  1. 先建立表單,並指定 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>
  1. 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;
}   
  1. 上傳後會得到結果如
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
                )

        )

)

方法二、手動上傳,並可自行指定對應命名

  1. 先建立表單,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>
  1. 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;
}   
  1. 顯示的結果為
小: 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