<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 上傳文件 如果你使用`ThinkPHP 6.1+`版本,并且需要使用`think-filesystem`上傳擴展,請額外執行下面安裝命令后按本手冊使用。 ``` composer require topthink/think-filesystem ``` >[danger] 內置的上傳只是上傳到本地服務器,上傳到遠程或者第三方平臺的話需要安裝額外的擴展。 假設表單代碼如下: ~~~ <form action="/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image" /> <br> <input type="submit" value="上傳" /> </form> ~~~ 然后在控制器中添加如下的代碼: ~~~ public function upload(){ // 獲取表單上傳文件 例如上傳了001.jpg $file = request()->file('image'); // 上傳到本地服務器 $savename = \think\facade\Filesystem::putFile( 'topic', $file); } ~~~ `$file`變量是一個`\think\File`對象,你可以獲取相關的文件信息,支持使用`SplFileObject`類的屬性和方法。 ## 上傳規則 默認情況下是上傳到本地服務器,會在`runtime/storage`目錄下面生成以當前日期為子目錄,以微秒時間的`md5`編碼為文件名的文件,例如上面生成的文件名可能是: ~~~ runtime/storage/topic/20160510/42a79759f284b767dfcb2a0197904287.jpg ~~~ 如果是多應用的話,上傳根目錄默認是`runtime/index/storage`,如果你希望上傳的文件是可以直接訪問或者下載的話,可以使用`public`存儲方式。 ``` $savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file); ``` 你可以在`config/filesystem.php`配置文件中配置上傳根目錄及上傳規則,例如: ``` return [ 'default' => 'local', 'disks' => [ 'local' => [ 'type' => 'local', 'root' => app()->getRuntimePath() . 'storage', ], 'public' => [ 'type' => 'local', 'root' => app()->getRootPath() . 'public/storage', 'url' => '/storage', 'visibility' => 'public', ], // 更多的磁盤配置信息 ], ]; ``` 系統默認根據日期和微秒數生成文件命名規則,為了避免并發導致的沖突可能,我們可以指定上傳文件的命名規則,例如: ``` $savename = \think\facade\Filesystem::putFile( 'topic', $file, 'md5'); ``` 最終生成的文件名類似于: ~~~ runtime/storage/topic/72/ef580909368d824e899f77c7c98388.jpg ~~~ > 你可以使用`hash_file`支持的任意哈希規則(也就是`hash_algos`函數返回的規則列表),會自動以散列值的前兩個字符作為子目錄,后面的散列值作為文件名。 如果需要使用自定義命名規則,可以在`rule`方法中傳入函數或者使用閉包方法,例如: ``` $savename = \think\facade\Filesystem::putFile( 'topic', $file, 'uniqid'); ``` 如果希望以指定的文件名保存,可調用`putFileAs`方法,例如: ``` $savename = \think\facade\Filesystem::putFileAs( 'topic', $file, 'abc.jpg'); ``` ## 多文件上傳 如果你使用的是多文件上傳表單,例如: ~~~ <form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image[]" /> <br> <input type="file" name="image[]" /> <br> <input type="file" name="image[]" /> <br> <input type="submit" value="上傳" /> </form> ~~~ 控制器代碼可以改成: ~~~ public function upload(){ // 獲取表單上傳文件 $files = request()->file('image'); $savename = []; foreach($files as $file){ $savename[] = \think\facade\Filesystem::putFile( 'topic', $file); } } ~~~ ## 上傳驗證 支持使用驗證類對上傳文件的驗證,包括文件大小、文件類型和后綴: ~~~ public function upload(){ // 獲取表單上傳文件 $files = request()->file(); try { validate(['image'=>'fileSize:10240|fileExt:jpg|image:200,200,jpg']) ->check($files); $savename = []; foreach($files as $file) { $savename[] = \think\facade\Filesystem::putFile( 'topic', $file); } } catch (\think\exception\ValidateException $e) { echo $e->getMessage(); } } ~~~ |驗證參數|說明| |---|---| |fileSize|上傳文件的最大字節| |fileExt|文件后綴,多個用逗號分割或者數組| |fileMime|文件MIME類型,多個用逗號分割或者數組| |image|驗證圖像文件的尺寸和類型| 具體用法可以參考驗證章節的內置規則-> 上傳驗證。 ## 獲取文件hash散列值 可以獲取上傳文件的哈希散列值,例如: ~~~ // 獲取表單上傳文件 $file = request()->file('image'); // 獲取上傳文件的hash散列值 echo $file->md5(); echo $file->sha1(); ~~~ 可以統一使用hash方法獲取文件散列值 ~~~ // 獲取表單上傳文件 $file = request()->file('image'); // 獲取上傳文件的hash散列值 echo $file->hash('sha1'); echo $file->hash('md5'); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看