2020年5月28日

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>内容</title>
    6. </head>
    7. <body>
    8. <form action="demo2.php" method="post" enctype="multipart/form-data">
    9. <input type="file" name="f">
    10. <button>上传</button>
    11. </form>
    12. </body>
    13. </html>
    14. <?php
    15. $file= $_FILES['f'];
    16. var_dump($file);
    17. //判断是否有错误
    18. if($file['error'] > 0){
    19. switch($file['f']){
    20. case 1:
    21. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    22. break;
    23. case 2:
    24. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    25. break;
    26. case 3:
    27. exit('文件只有部分上传');
    28. break;
    29. case 4:
    30. exit('没有文件被上传');
    31. break;
    32. case 6:
    33. exit('找不到临时文件夹');
    34. break;
    35. case 7:
    36. exit('文件写入失败');
    37. break;
    38. }
    39. }
    40. //文件大小校验
    41. //定义变量保存=>允许上传最大字节数
    42. $size=1024*1024*10;
    43. if($file['size'] > $size){
    44. exit('文件大小超出限定大小');
    45. }
    46. $type =[
    47. 'image/png',
    48. 'image/jpg',
    49. 'image/gif',
    50. ];
    51. //判断当前文件类型是否允许上传
    52. if(! in_array($file['type'],$type)){
    53. exit('文件类型不被允许'.$file['type']);
    54. }
    55. //获得md5
    56. $fileData=file_get_contents($file['tmp_name']);
    57. $fileMd5 =md5($fileData);
    58. //获得id
    59. $id=uniqid();
    60. //获得文件后缀
    61. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    62. //拼接成文件名
    63. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    64. //拼接完整的保存路径
    65. $saveDir='./uploads/';
    66. $savaPath=$savaDir . $fileName;
    67. $isFile =is_uploaded_file($_FILES['f']['tmp_name']);
    68. if(! $isFile){
    69. exit('is_uploaded_file 判断出非法上传');
    70. }
    71. $moveFile=move_uploaded_file($_FILES['f']['tmp_name'],$savaPath);
    72. if(! $moveFile){
    73. exit('move_uploaded_file 判断出非法上传');
    74. }
    75. echo"上传成功";
    76. ?>
    77. <!DOCTYPE html>
    78. <html>
    79. <head>
    80. <meta charset="UTF-8">
    81. <title>内容</title>
    82. </head>
    83. <body>
    84. <h1>多文件上传</h1>
    85. <form action="./demo3.php" method="post" enctype="multipart/form-data">
    86. <label for="">文件1:</label><input type="file" name="f[]"><br>
    87. <label for="">文件2:</label><input type="file" name="f[]"><br>
    88. <label for="">文件3:</label><input type="file" name="f[]"><br>
    89. <label for="">文件4:</label><input type="file" name="f[]"><br>
    90. <label for="">文件5:</label><input type="file" name="f[]"><br>
    91. <button>上传</button>
    92. </form>
    93. </body>
    94. </html>
    95. <?php
    96. echo"<pre>"
    97. var_dump($_FILES);
    98. var_dump($_FILES['f']['name']);
    99. foreach($_FILES['f']['name'] as $k => $v){
    100. $name = $_FILES['f']['name'][$k];
    101. $type= $_FILES['f']['type'][$k];
    102. $tmp_name= $_FILES['f']['tmp_name'][$k];
    103. $error= $_FILES['f']['error'][$k];
    104. $size= $_FILES['f']['size'][$k];
    105. if($file['error'] > 0){
    106. switch($file['f']){
    107. case 1:
    108. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    109. break;
    110. case 2:
    111. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    112. break;
    113. case 3:
    114. exit('文件只有部分上传');
    115. break;
    116. case 4:
    117. exit('没有文件被上传');
    118. break;
    119. case 6:
    120. exit('找不到临时文件夹');
    121. break;
    122. case 7:
    123. exit('文件写入失败');
    124. break;
    125. }
    126. }
    127. $size=1024*1024*10;
    128. if($file['size'] > $size){
    129. exit('文件大小超出限定大小');
    130. }
    131. $type =[
    132. 'image/png',
    133. 'image/jpg',
    134. 'image/gif'
    135. ];
    136. //判断文件类型是否在数组中 in_array
    137. if(! in_array($type,$allowType)){
    138. exit('禁止上传该类型文件')
    139. }
    140. $fileData=file_get_contents($file['tmp_name']);
    141. $fileMd5 =md5($fileData);
    142. //获得id
    143. $id=uniqid();
    144. //获得文件后缀
    145. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    146. //拼接成文件名
    147. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    148. $savePath='./uploads/' .$fileName;
    149. //保存文件
    150. if(is_uploaded_file($tmp_name) && move_uploaded_file($tmp_name,$savaPath)){
    151. echo"文件上传成功";
    152. }else{
    153. echo"文件上传失败";
    154. }
    155. }
    156. echo"</pre>";
    157. ?>
    158. <!DOCTYPE html>
    159. <html>
    160. <head>
    161. <meta charset="UTF-8">
    162. <title>内容</title>
    163. </head>
    164. <body>
    165. <h1>单文件上传</h1>
    166. <form action="./demo4.php" method="post" enctype="multipart/form-data">
    167. <input type="file" name="f">
    168. <botton>上传</botton>
    169. </form>
    170. </body>
    171. </html>
    172. <!DOCTYPE html>
    173. <html>
    174. <head>
    175. <meta charset="UTF-8">
    176. <title>内容</title>
    177. </head>
    178. <body>
    179. <h1>多文件上传</h1>
    180. <form action="./demo5.php" method="post" enctype="multipart/form-data">
    181. <label for="">文件1:</label><input type="file" name="f[]"><br>
    182. <label for="">文件2:</label><input type="file" name="f[]"><br>
    183. <botton>上传</botton>
    184. </form>
    185. </body>
    186. </html>
    187. <!DOCTYPE html>
    188. <html>
    189. <head>
    190. <meta charset="UTF-8">
    191. <title>内容</title>
    192. </head>
    193. <body>
    194. <form action="demo2.php" method="post" enctype="multipart/form-data">
    195. <input type="file" name="f">
    196. <button>上传</button>
    197. </form>
    198. </body>
    199. </html>
    200. <?php
    201. $file= $_FILES['f'];
    202. var_dump($file);
    203. //判断是否有错误
    204. if($file['error'] > 0){
    205. switch($file['f']){
    206. case 1:
    207. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    208. break;
    209. case 2:
    210. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    211. break;
    212. case 3:
    213. exit('文件只有部分上传');
    214. break;
    215. case 4:
    216. exit('没有文件被上传');
    217. break;
    218. case 6:
    219. exit('找不到临时文件夹');
    220. break;
    221. case 7:
    222. exit('文件写入失败');
    223. break;
    224. }
    225. }
    226. //文件大小校验
    227. //定义变量保存=>允许上传最大字节数
    228. $size=1024*1024*10;
    229. if($file['size'] > $size){
    230. exit('文件大小超出限定大小');
    231. }
    232. $type =[
    233. 'image/png',
    234. 'image/jpg',
    235. 'image/gif',
    236. ];
    237. //判断当前文件类型是否允许上传
    238. if(! in_array($file['type'],$type)){
    239. exit('文件类型不被允许'.$file['type']);
    240. }
    241. //获得md5
    242. $fileData=file_get_contents($file['tmp_name']);
    243. $fileMd5 =md5($fileData);
    244. //获得id
    245. $id=uniqid();
    246. //获得文件后缀
    247. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    248. //拼接成文件名
    249. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    250. //拼接完整的保存路径
    251. $saveDir='./uploads/';
    252. $savaPath=$savaDir . $fileName;
    253. $isFile =is_uploaded_file($_FILES['f']['tmp_name']);
    254. if(! $isFile){
    255. exit('is_uploaded_file 判断出非法上传');
    256. }
    257. $moveFile=move_uploaded_file($_FILES['f']['tmp_name'],$savaPath);
    258. if(! $moveFile){
    259. exit('move_uploaded_file 判断出非法上传');
    260. }
    261. echo"上传成功";
    262. ?>
    263. <!DOCTYPE html>
    264. <html>
    265. <head>
    266. <meta charset="UTF-8">
    267. <title>内容</title>
    268. </head>
    269. <body>
    270. <h1>多文件上传</h1>
    271. <form action="./demo3.php" method="post" enctype="multipart/form-data">
    272. <label for="">文件1:</label><input type="file" name="f[]"><br>
    273. <label for="">文件2:</label><input type="file" name="f[]"><br>
    274. <label for="">文件3:</label><input type="file" name="f[]"><br>
    275. <label for="">文件4:</label><input type="file" name="f[]"><br>
    276. <label for="">文件5:</label><input type="file" name="f[]"><br>
    277. <button>上传</button>
    278. </form>
    279. </body>
    280. </html>
    281. <?php
    282. echo"<pre>"
    283. var_dump($_FILES);
    284. var_dump($_FILES['f']['name']);
    285. foreach($_FILES['f']['name'] as $k => $v){
    286. $name = $_FILES['f']['name'][$k];
    287. $type= $_FILES['f']['type'][$k];
    288. $tmp_name= $_FILES['f']['tmp_name'][$k];
    289. $error= $_FILES['f']['error'][$k];
    290. $size= $_FILES['f']['size'][$k];
    291. if($file['error'] > 0){
    292. switch($file['f']){
    293. case 1:
    294. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    295. break;
    296. case 2:
    297. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    298. break;
    299. case 3:
    300. exit('文件只有部分上传');
    301. break;
    302. case 4:
    303. exit('没有文件被上传');
    304. break;
    305. case 6:
    306. exit('找不到临时文件夹');
    307. break;
    308. case 7:
    309. exit('文件写入失败');
    310. break;
    311. }
    312. }
    313. $size=1024*1024*10;
    314. if($file['size'] > $size){
    315. exit('文件大小超出限定大小');
    316. }
    317. $type =[
    318. 'image/png',
    319. 'image/jpg',
    320. 'image/gif'
    321. ];
    322. //判断文件类型是否在数组中 in_array
    323. if(! in_array($type,$allowType)){
    324. exit('禁止上传该类型文件')
    325. }
    326. $fileData=file_get_contents($file['tmp_name']);
    327. $fileMd5 =md5($fileData);
    328. //获得id
    329. $id=uniqid();
    330. //获得文件后缀
    331. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    332. //拼接成文件名
    333. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    334. $savePath='./uploads/' .$fileName;
    335. //保存文件
    336. if(is_uploaded_file($tmp_name) && move_uploaded_file($tmp_name,$savaPath)){
    337. echo"文件上传成功";
    338. }else{
    339. echo"文件上传失败";
    340. }
    341. }
    342. echo"</pre>";
    343. ?>
    344. <!DOCTYPE html>
    345. <html>
    346. <head>
    347. <meta charset="UTF-8">
    348. <title>内容</title>
    349. </head>
    350. <body>
    351. <h1>单文件上传</h1>
    352. <form action="./demo4.php" method="post" enctype="multipart/form-data">
    353. <input type="file" name="f">
    354. <botton>上传</botton>
    355. </form>
    356. </body>
    357. </html>
    358. <!DOCTYPE html>
    359. <html>
    360. <head>
    361. <meta charset="UTF-8">
    362. <title>内容</title>
    363. </head>
    364. <body>
    365. <h1>多文件上传</h1>
    366. <form action="./demo5.php" method="post" enctype="multipart/form-data">
    367. <label for="">文件1:</label><input type="file" name="f[]"><br>
    368. <label for="">文件2:</label><input type="file" name="f[]"><br>
    369. <botton>上传</botton>
    370. </form>
    371. </body>
    372. </html>
    373. <!DOCTYPE html>
    374. <html>
    375. <head>
    376. <meta charset="UTF-8">
    377. <title>内容</title>
    378. </head>
    379. <body>
    380. <form action="demo2.php" method="post" enctype="multipart/form-data">
    381. <input type="file" name="f">
    382. <button>上传</button>
    383. </form>
    384. </body>
    385. </html>
    386. <?php
    387. $file= $_FILES['f'];
    388. var_dump($file);
    389. //判断是否有错误
    390. if($file['error'] > 0){
    391. switch($file['f']){
    392. case 1:
    393. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    394. break;
    395. case 2:
    396. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    397. break;
    398. case 3:
    399. exit('文件只有部分上传');
    400. break;
    401. case 4:
    402. exit('没有文件被上传');
    403. break;
    404. case 6:
    405. exit('找不到临时文件夹');
    406. break;
    407. case 7:
    408. exit('文件写入失败');
    409. break;
    410. }
    411. }
    412. //文件大小校验
    413. //定义变量保存=>允许上传最大字节数
    414. $size=1024*1024*10;
    415. if($file['size'] > $size){
    416. exit('文件大小超出限定大小');
    417. }
    418. $type =[
    419. 'image/png',
    420. 'image/jpg',
    421. 'image/gif',
    422. ];
    423. //判断当前文件类型是否允许上传
    424. if(! in_array($file['type'],$type)){
    425. exit('文件类型不被允许'.$file['type']);
    426. }
    427. //获得md5
    428. $fileData=file_get_contents($file['tmp_name']);
    429. $fileMd5 =md5($fileData);
    430. //获得id
    431. $id=uniqid();
    432. //获得文件后缀
    433. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    434. //拼接成文件名
    435. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    436. //拼接完整的保存路径
    437. $saveDir='./uploads/';
    438. $savaPath=$savaDir . $fileName;
    439. $isFile =is_uploaded_file($_FILES['f']['tmp_name']);
    440. if(! $isFile){
    441. exit('is_uploaded_file 判断出非法上传');
    442. }
    443. $moveFile=move_uploaded_file($_FILES['f']['tmp_name'],$savaPath);
    444. if(! $moveFile){
    445. exit('move_uploaded_file 判断出非法上传');
    446. }
    447. echo"上传成功";
    448. ?>
    449. <!DOCTYPE html>
    450. <html>
    451. <head>
    452. <meta charset="UTF-8">
    453. <title>内容</title>
    454. </head>
    455. <body>
    456. <h1>多文件上传</h1>
    457. <form action="./demo3.php" method="post" enctype="multipart/form-data">
    458. <label for="">文件1:</label><input type="file" name="f[]"><br>
    459. <label for="">文件2:</label><input type="file" name="f[]"><br>
    460. <label for="">文件3:</label><input type="file" name="f[]"><br>
    461. <label for="">文件4:</label><input type="file" name="f[]"><br>
    462. <label for="">文件5:</label><input type="file" name="f[]"><br>
    463. <button>上传</button>
    464. </form>
    465. </body>
    466. </html>
    467. <?php
    468. echo"<pre>"
    469. var_dump($_FILES);
    470. var_dump($_FILES['f']['name']);
    471. foreach($_FILES['f']['name'] as $k => $v){
    472. $name = $_FILES['f']['name'][$k];
    473. $type= $_FILES['f']['type'][$k];
    474. $tmp_name= $_FILES['f']['tmp_name'][$k];
    475. $error= $_FILES['f']['error'][$k];
    476. $size= $_FILES['f']['size'][$k];
    477. if($file['error'] > 0){
    478. switch($file['f']){
    479. case 1:
    480. exit('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
    481. break;
    482. case 2:
    483. exit('上传的文件大小超过HTML表单中MAX_FILE_SIZE 选项指定的值');
    484. break;
    485. case 3:
    486. exit('文件只有部分上传');
    487. break;
    488. case 4:
    489. exit('没有文件被上传');
    490. break;
    491. case 6:
    492. exit('找不到临时文件夹');
    493. break;
    494. case 7:
    495. exit('文件写入失败');
    496. break;
    497. }
    498. }
    499. $size=1024*1024*10;
    500. if($file['size'] > $size){
    501. exit('文件大小超出限定大小');
    502. }
    503. $type =[
    504. 'image/png',
    505. 'image/jpg',
    506. 'image/gif'
    507. ];
    508. //判断文件类型是否在数组中 in_array
    509. if(! in_array($type,$allowType)){
    510. exit('禁止上传该类型文件')
    511. }
    512. $fileData=file_get_contents($file['tmp_name']);
    513. $fileMd5 =md5($fileData);
    514. //获得id
    515. $id=uniqid();
    516. //获得文件后缀
    517. $fileExt=pathinfo($file['name'],PATHINFO_EXTENSION);
    518. //拼接成文件名
    519. $fileName=$fileMd5 .'-'.$id.'.'.$fileExt;
    520. $savePath='./uploads/' .$fileName;
    521. //保存文件
    522. if(is_uploaded_file($tmp_name) && move_uploaded_file($tmp_name,$savaPath)){
    523. echo"文件上传成功";
    524. }else{
    525. echo"文件上传失败";
    526. }
    527. }
    528. echo"</pre>";
    529. ?>
    530. <!DOCTYPE html>
    531. <html>
    532. <head>
    533. <meta charset="UTF-8">
    534. <title>内容</title>
    535. </head>
    536. <body>
    537. <h1>单文件上传</h1>
    538. <form action="./demo4.php" method="post" enctype="multipart/form-data">
    539. <input type="file" name="f">
    540. <botton>上传</botton>
    541. </form>
    542. </body>
    543. </html>
    544. <!DOCTYPE html>
    545. <html>
    546. <head>
    547. <meta charset="UTF-8">
    548. <title>内容</title>
    549. </head>
    550. <body>
    551. <h1>多文件上传</h1>
    552. <form action="./demo5.php" method="post" enctype="multipart/form-data">
    553. <label for="">文件1:</label><input type="file" name="f[]"><br>
    554. <label for="">文件2:</label><input type="file" name="f[]"><br>
    555. <botton>上传</botton>
    556. </form>
    557. </body>
    558. </html>

    笔记:
    文件保存功能:is_uploaded_file(文件名):bool 判断是否通过http post 上传

    move_uploaded_file(文件名):bool 判断文件是否合法上传,移动文件到新位置

    数据结构
    $_FILES[f][name] =>array()
    $_FILES[f][type] =>array()
    $_FILES[f][tmp_name] =>array()
    $_FILES[f][error] =>array()
    $_FILES[f][size] =>array()

    单文件上传:把文件上传封装称为函数,只需要去调用函数就能够去上传文件
    $file array 文件信息($_FILES[‘f’])
    $savaDir string 文件保存的文件夹地址
    $size int 限定上传文件的大小
    $type array 限定上传文件的类型