導航:首頁 > 編程語言 > php同時上傳多個文件

php同時上傳多個文件

發布時間:2022-09-08 18:15:48

php如何實現一次性上傳多個文件

<?php
$max_files=5; //最多上傳文件的個數,與 up.htm 中的 input file 控制項的個數相同
$up_ok_files=0; //成功上傳的文件個數
$up_folder="ups"; //保存上傳文件的目標文件夾
if(isset($_FILES['myfile'])){
//由於 $_FILES['myfile'] 是個數組,所以需要使用循環遍歷
for($i=0;$i<$max_files;$i++){
//如果未出錯
if($_FILES['myfile']['error'][$i]==0){
if(move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$up_folder."/".$_FILES['myfile']['name'][$i])){
//成功上傳後,計數器增 1
$up_ok_files +=1;
}
else{
echo "<h4 style='color:red;'>在伺服器中保存失敗</h4>";
}
}
}
echo "<h4>成功上傳 ".$up_ok_files. " 個文件</h4>";
}
?>

如果對 $_FILES['myfile'] 這個數組的結構不清楚,那麼可以在循環之前加入這句代碼將其顯示出來:
print_r($_FILES['myfile']);

對這個數組的結構了解之後,理解上述代碼就比較容易了。
foreach循環實現
常規下,php上傳一張圖片,頁面上添加一個文件域,上傳後,得到的數組是二維數組
轉變一下,
頁面上添加多個文件域,並且他們的name屬性相同,而且是以數組形式提交(比如:name="file[]")
那麼上傳後,得到的是三維數組
而,php中,foreach循環對遍歷數組那真是完美至極
用foreach遍歷一次這個三維數組,得到的結果就又是二維數組,那麼,就和上傳一張圖片一樣一樣的了

② php怎麼上傳做個文件,要能夠同時上傳多個文件

/*
作者:遙遠的期待
QQ:15624575
個人主頁:www.d1php.info
*/
<?php
function upload_multi($path,$photo,$i){
$uploaddir = './'.$path;//文件存放目錄
if(!file_exists($uploaddir))//如果目錄不存在就新建
$uploaddir=mkdir($uploaddir);

$piece = explode('.',$photo['name'][$i]);
$uploadfile = $uploaddir . '/'.md5($piece[0]).'.'.$piece[1];
$result = move_uploaded_file($photo['tmp_name'][$i], $uploadfile);
if(!$result){
exit('上傳失敗');
}
return basename($uploadfile);
}

if($_POST['tijiao']){
extract($_POST);
$i=0;
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
upload_multi($email,$_FILES["pictures"],$i);
}
$i++;
}
}
?>
<script language="javaScript" type="text/javascript" src="js/jquery.js"></script>
<script language="javascript">
function go_up(){
$("#new_up").append('圖片:<input type="file" name="pictures[]" /><br>');
}
</script>
<form action="php.php" method="post" enctype="multipart/form-data">
<p>多圖片上傳<br>
<input type="text" name="username" /><br>
<input type="text" name="email" /><br>
<input type="file" name="pictures[]" /><br>
<div id="new_up"></div>
<input type="button"" name="add_img" value="新增上傳" onclick="go_up()"/><br>
<input type="submit" value="Send" name="tijiao"/><br>
</p>
</form>
?>

③ php上傳多個文件要怎麼處理啊

HTML
<input name="pic[]" type="file" />
<input name="pic[]" type="file" />
<input name="pic[]" type="file" />
PHP:
foreach($_FILES['pic']['name'] as $k=>$v){
//判斷每個上傳文件的後綴,大小,有沒有錯誤等
if ($_FILES['pic']['error'][$k] == 0 && $_FILES['pic']['name'] != ''){
//再檢測一下文件名
//開始上傳,這里要注意,要把上傳所需的內容讀出來
//新的文件名之類的
//move_upload_file這來移動文
}else{
//拋出異常
}
}

④ 如何實現php上傳多個文件 - 技術問答

PHP不支持一個file表單一次上傳多個文件,所以需要寫很多個type為file的放在form表單下,但是名字要相同。用一個提交按鈕,然後循環出所有的文件逐個上傳。

⑤ php同時上傳多個文件,但只能成功上傳一個文件,求大神指導哪裡錯了

看看伺服器設置的上傳文件大小設置吧

⑥ php實現多文件上傳

3個上傳域用相同的name屬性,並且是數組形式提交, php中循環處理上傳即可

⑦ 多文件上傳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如何實現一次性上傳多個文件的表單和PHP怎樣接收多個上傳的文件的代碼。

html5 input標簽中加了一個 multiple=true,就可以選多個文件上傳了,多文件跟單文件也是一樣處理,你把$_FILES列印出來就知道了,就是一個個把上傳的臨時文件保存到你要保存的地方就行

⑨ php實現:一次選擇多個文件上傳

參考代碼如下:
<?php
$max_files=5; //最多上傳文件的個數,與 up.htm 中的 input file 控制項的個數相同
$up_ok_files=0; //成功上傳的文件個數
$up_folder="ups"; //保存上傳文件的目標文件夾
if(isset($_FILES['myfile'])){
//由於 $_FILES['myfile'] 是個數組,所以需要使用循環遍歷
for($i=0;$i<$max_files;$i++){
//如果未出錯
if($_FILES['myfile']['error'][$i]==0){
if(move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$up_folder."/".$_FILES['myfile']['name'][$i])){
//成功上傳後,計數器增 1
$up_ok_files +=1;
}
else{
echo "<h4 style='color:red;'>在伺服器中保存失敗</h4>";
}
}
}
echo "<h4>成功上傳 ".$up_ok_files. " 個文件</h4>";
}
?>
注意:
如果對 $_FILES['myfile'] 這個數組的結構不清楚,可以在循環之前加入這句代碼將其顯示出來:
print_r($_FILES['myfile']);

閱讀全文

與php同時上傳多個文件相關的資料

熱點內容
androidm3u8緩存 瀏覽:234
imphp開源知乎 瀏覽:706
清除網路通配符dos命令 瀏覽:837
鴻蒙系統怎麼快速換回安卓 瀏覽:712
pdf綠色虛擬列印機 瀏覽:213
androidtab框架 瀏覽:147
java轉php的時間戳 瀏覽:639
編譯libstdc依賴 瀏覽:659
清演算法人與原法人的區別 瀏覽:410
家庭裝修下載什麼app軟體 瀏覽:575
美食博主用什麼app拍視頻 瀏覽:816
ipone手機如何加密微信 瀏覽:357
自來水加密閥閥帽 瀏覽:438
華為交換機dhcp配置命令 瀏覽:319
androidbitmap縮小 瀏覽:275
單片機串口控制燈 瀏覽:88
大訊雲伺服器安裝視頻 瀏覽:788
華為演算法領先世界 瀏覽:658
linux路由重啟 瀏覽:570
php的模板編程 瀏覽:324