## ä¸ä¼ æ件
>[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
~~~
ç³»ç»é»è®¤æä¾äºå ç§ä¸ä¼ å½åè§åï¼å
æ¬ï¼
|è§å|æè¿°|
|---|---|
|date|æ ¹æ®æ¥æåå¾®ç§æ°çæ|
|md5|对æ件使ç¨md5_fileæ£åçæ|
|sha1|对æ件使ç¨sha1_fileæ£åçæ|
> å
¶ä¸md5åsha1è§åä¼èªå¨ä»¥æ£åå¼çå两个å符ä½ä¸ºåç®å½ï¼åé¢çæ£åå¼ä½ä¸ºæ件åã
å¦æéè¦ä½¿ç¨èªå®ä¹å½åè§åï¼å¯ä»¥å¨`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');
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿