當前位置:首頁 » 文件管理 » php多個文件上傳

php多個文件上傳

發布時間: 2023-08-04 19:26:38

Ⅰ 多文件上傳php怎麼寫

方法一:當多文件上傳表單中多個上傳文件的name屬性為「pic[]」形式時,也即表單為這種形式。
HTML代碼:
1<formaction=""method="post"enctype="multipart/form-data">
2<inputtype="hidden"name="MAX_FILE_SIZE"value="">
3<inputtype="file"name="pic[]"/><br><br>
4<inputtype="file"name="pic[]"/><br><br>
5<inputtype="file"name="pic[]"/><br><br>
6<inputtype="file"name="pic[]"/><br><br>
7<inputtype="submit"value="upload"/>
8</form>
PHP代碼:
01<?php
02//1.獲取要上傳文件的信息
03$up_info=$_FILES['pic'];
04
05$ob_path="../system";
06
07$typelist=array("image/gif","image/jpeg","image/pjpeg","image/png");//定義運行的上傳文件類型
08
09
10for($i=0;$i<count($up_info['name']);$i++){//foreach循環處理多個文件上傳
11//2.判斷文件是否上傳錯誤
12
13if($up_info['error'][$i]>0){
14switch($up_info['error'][$i]){
15case1:
16$err_info="上傳的文件超過了php.ini中upload_max_filesize選項限制的值";
17break;
18case2:
19$err_info="上傳文件的大小超過了HTML表單中MAX_FILE_SIZE選項指定的值";
20break;
21case3:
22$err_info="文件只有部分被上傳";
23break;
24case4:
25$err_info="沒有文件被上傳";
26break;
27case6:
28$err_info="找不到臨時文件夾";
29break;
30case7:
31$err_info="文件寫入失敗";
32break;
33default:
34$err_info="未知的上傳錯誤";
35break;
36}
37continue($err_info);
38}
39
40
41//3.判斷文件上傳的類型是否合法
42
43if(!in_array($up_info['type'][$i],$typelist)){
44continue('文件類型錯誤!'.$up_info['type'][$i]);
45}
46
47//4.上傳文件的大小過濾
48
49if($up_info['size'][$i]>1000000){
50continue('文件大小超過1000000');
51}
52
53
54//5.上傳文件名處理
55
56$exten_name=pathinfo($up_info['name'][$i],PATHINFO_EXTENSION);
57
58do{
59$main_name=date('YmHis'.'--'.rand(100,999));
60$new_name=$main_name.'.'.$exten_name;
61}while(file_exists($to_path.'/'.$new_name));
62
63
64
65//6.判斷是否是上傳的文件,並執行上傳
66
67if(is_uploaded_file($up_info['tmp_name'][$i])){
68
69if(move_uploaded_file($up_info['tmp_name'][$i],$ob_path.'/'.$new_name)){
70echo'文件上傳成功!';
71}else{
72echo'上傳文件移動失敗!';
73}
74}else{
75echo'文件不是上傳的文件';
76}
77
78}//for循環的括弧
方法二:當多文件上傳表單中多個上傳文件的name屬性為「pic,text,doc,pdf」形式時
也即表單為這種形式:
1<formaction=""method="post"enctype="multipart/form-data">
2<inputtype="hidden"name="MAX_FILE_SIZE"value="">
3<inputtype="file"name="pic"/><br><br>
4<inputtype="file"name="text"/><br><br>
5<inputtype="file"name="doc"/><br><br>
6<inputtype="file"name="pdf"/><br><br>
7
8<inputtype="submit"value="upload"/>
9</form>
01//1.獲取要上傳文件的信息
02$up_info=$_FILES;
03
04$ob_path="..system";
05
06$typelist=array("image/gif","image/jpeg","image/pjpeg","image/png");//定義運行的上傳文件類型
07
08
09
10foreach($up_infoas$k_name=>$value){//用foreach循環處理多個文件的上傳
11//2.判斷文件是否上傳錯誤
12
13if($up_info[$k_name]['error']>0){
14switch($up_info['error'][$i]){
15case1:
16$err_info="上傳的文件超過了php.ini中upload_max_filesize選項限制的值";
17break;
18case2:
19$err_info="上傳文件的大小超過了HTML表單中MAX_FILE_SIZE選項指定的值";
20break;
21case3:
22$err_info="文件只有部分被上傳";
23break;
24case4:
25$err_info="沒有文件被上傳";
26break;
27case6:
28$err_info="找不到臨時文件夾";
29break;
30case7:
31$err_info="文件寫入失敗";
32break;
33default:
34$err_info="未知的上傳錯誤";
35break;
36}
37continue($err_info);
38}
39
40
41//3.判斷文件上傳的類型是否合法
42
43if(!in_array($up_info[$k_name]['type'],$typelist)){
44continue('文件類型錯誤!'.$up_info[$k_name]['type']);
45}
46
47//4.上傳文件的大小過濾
48
49if($up_info[$k_name]['size']>100000){
50echo'文件大小超過**';
51continue;
52}
53
54
55//5.上傳文件名處理
56
57$exten_name=pathinfo($up_info[$k_name]['name'],PATHINFO_EXTENSION);
58
59do{
60$main_name=date('YmHis'.'--'.rand(100,999));
61$new_name=$main_name.'.'.$exten_name;
62}while(file_exists($to_path.'/'.$new_name));
63
64
65//6.判斷是否是上傳的文件,並執行上傳
66
67if(is_uploaded_file($up_info[$k_name]['tmp_name'])){
68
69if(move_uploaded_file($up_info[$k_name]['tmp_name'],$ob_path.'/'.$new_name)){
70echo'文件上傳成功!';
71}else{
72echo'上傳文件移動失敗!';
73}
74}else{
75echo'文件不是上傳的文件';
76}
77
78}//for循環的括弧
方法三:先定義單個文件上傳的函數,再循環調用這個函數,每次傳入一個文件的上傳信息,也可以到達多文件上傳的目的,而且這種方式,更容易理解。
1<formaction=""method="post"enctype="multipart/form-data">
2<inputtype="hidden"name="MAX_FILE_SIZE"value="">
3<inputtype="file"name="pic1"><br>
4<inputtype="file"name="pic2"><br>
5<inputtype="file"name="pic3"><br>
6<inputtype="submit"value="upload">
7</form>
001/*
002*單文件上傳函數
003*@paramarray$up_info記錄上傳文件信息的超全局數組
004*@paramstring$to_path上傳文件的目標路徑
005*@paramarray$typlist允許的文件類型
006*@paramint$file_size允許的文件大小
007*@returnstring上傳失敗,返回失敗的原因,
008*http://yige.org/php/
009*成功返回包括文件名的路徑。
010*/
011
012
013functionupload_fun($up_info,$to_path,$typelist=array(),$file_size=2000000){
014
015//1.判斷文件上傳是否錯誤
016
017if($up_file['error']>0){
018switch($up_info['error']){
019case1:
020$err_info="上傳的文件超過了php.ini中upload_max_filesize選項限制的值";
021break;
022case2:
023$err_info="上傳文件的大小超過了HTML表單中MAX_FILE_SIZE選項指定的值";
024break;
025case3:
026$err_info="文件只有部分被上傳";
027break;
028case4:
029$err_info="沒有文件被上傳";
030break;
031case6:
032$err_info="找不到臨時文件夾";
033break;
034case7:
035$err_info="文件寫入失敗";
036break;
037default:
038$err_info="未知的上傳錯誤";
039break;
040}
041
042return$err_info;
043die();
044}
045
046
047//2.判斷上傳文件類型是否合法
048
049if(count($typelist)>0){
050if(!in_array($up_info['type'],$typelist)){
051
052$err_info='文件類型不合法!'.$up_info['type'];
053return$err_info;
054die();
055}
056}
057
058//4.判斷上傳文件大小是否超出允許值
059
060if($up_info['size']>$file_size){
061
062return$err_info='文件大小超過'.$file_size;
063die();
064}
065
066//5.上傳文件重命名
067
068$exten_name=pathinfo($up_info['name'],PATHINFO_EXTENSION);
069
070do{
071$main_name=date('YmHis'.'--'.rand(100,999));
072$new_name=$main_name.'.'.$exten_name;
073}while(file_exists($to_path.'/'.$new_name));
074
075//6.判斷是否是上傳的文件,並移動文件
076
077if(is_uploaded_file($up_info['tmp_name'])){
078
079if(move_uploaded_file($up_info['tmp_name'],$to_path.'/'.$new_name)){
080
081$err_info=$to_path.'/'.$new_name;
082return$err_info;
083die();
084}else{
085
086return$err_info='上傳文件移動失敗!';
087die();
088
089}
090}else{
091
092return$err_info='這個文件不是上傳文件!';
093die();
094}
095
096}
097
098//函數使用方法如下
099
100$multi_info=$_FILES;//接收$_FILES的全部上傳信息
101
102$to_path='system';//上傳文件的目標路徑
103
104foreach($multi_infoas$name=>$up_info){//foreach遍歷$multi_info
105
106$err_info=upload_fun($up_info,$to_path);//調用單文件上傳函數
107
108p($err_info);//輸出返回信息;
109
110}

Ⅱ php同時上傳多個文件或者整個文件夾怎麼實現,最好發個demo,求大俠們幫助下

您好,這樣的:
純web無解,最少需要客戶端裝控制項,
php將本地文件夾上傳的其他伺服器倒是可以。
方法一:把文件夾打包成zip上傳然後伺服器端解壓,調用/內建的解壓程序解壓然後刪除zip文件。
方法二:做個遍歷循環判斷,遇到目錄的就利用mkdir創建目錄,遇到文件的就用ftp傳上到伺服器。

Ⅲ 用PHP控制FTP文件上傳

利用PHP,你總是可以有多種方式來完成某個特定的任務。我們就拿文件上傳舉個例子。當然了,你可以按照傳統的方式來使用HTTP文件上傳,把文件直接傳輸到Web伺服器磁碟上。南邵電腦培訓認為你還可以用更加奇異的方式上傳,用FTP協議兩步就完成上傳:從你的本地硬碟到Web伺服器,然後再到FTP伺服器。



PHP在本機同時支持FTP和HTTP上傳,所以你可以根據自己應用程序的設計需要進行最佳的選擇。使用PHP的FTP函數進行文件傳輸幾乎與使用傳統的FTP客戶端相同——你會看到連函數的名字都和標準的FTP命令類似。


關於HTTP文件上傳的文章已經多得滿天飛了,這就是為什麼本文有必要把注意賣灶爛力放在基於FTP的文件辯首上傳上了(但是在後面給出的例子中,兩種方式你都會看到)。要注意的是,本教程假設你已經安裝好了PHP/Apache,而且HTTP文件上傳和FTP的函數都已經激活了。


第一步:確信你擁有連接/上傳到FTP伺服器的許可權


PHP的FTP函數需要客戶端-伺服器連接,所以你需要在進行文件上傳之前登錄到目標伺服器上。你的第一項任務是確信你已經擁有了完成這項任務的信中漏任書。這一步可能看起來是理所當然的,但是你會驚奇地發現有多少開發人員忘了這么做,結果後來浪費大量的時間來解決因此而出現的問題。


Ⅳ php curl 上傳多文件,怎麼弄

下面是一段示例代碼:

<?php
//註:PHP5.5.0起,文件上傳建議使用CURLFile代替@
//多文件上傳
$data=array(
'input_file[0]'=>newCURLFile('d:/1.txt','text/plain','testfile.txt'),
'input_file[1]'=>newCURLFile('d:/2.txt','text/plain'),
'input_file[2]'=>newCURLFile('d:/3.txt','text/plain'),
);
$ch=curl_init('http://demo.zjmainstay.cn/php/curl/curlUploadHandler.php');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_exec($ch);

如果你的版本比較低,文件部分使用:

'input_file[0]'=>'@d:/1.txt',

這樣既可。


我的博客《PHP cURL實現模擬登錄與採集使用方法詳解》對各類curl問題做了系統而詳細的講解,請參考「十、模擬上傳文件」部分查看更多文件上傳內容,如直接基於採集的文件內容進行上傳等。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726