iT邦幫忙

0

PHP上傳至資料夾

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20180927/20109357Hfoxg7aAWv.png
https://ithelp.ithome.com.tw/upload/images/20180927/20109357VjcXcAEa5J.png
‵‵‵

    if ($_FILES["file"]["error"] > 0){
    echo "Error: " . $_FILES["file"]["error"];
    }else{
    echo "檔案名稱: " . $_FILES["file"]["name"]."<br/>";
    echo "檔案類型: " . $_FILES["file"]["type"]."<br/>";
    echo "檔案大小: " . ($_FILES["file"]["size"] / 1024)." Kb<br />";
    echo "暫存名稱: " . $_FILES["file"]["tmp_name"]."<br>";
    }
    if ($_FILES["file"]["error"] > 0){
    echo "Error: " . $_FILES["file"]["error"];
        }else{
    echo "檔案名稱: " . $_FILES["file"]["name"]."<br/>";
    echo "檔案類型: " . $_FILES["file"]["type"]."<br/>";
    echo "檔案大小: " . ($_FILES["file"]["size"] / 1024)." Kb<br />";
    echo "暫存名稱: " . $_FILES["file"]["tmp_name"]."<br>";
        
    move_uploaded_file($_FILES["file"]["tmp_name"],"/user_photo".$_FILES["file"]["name"]);
    }
    if ($_FILES["file"]["error"] > 0){
        echo "Error: " . $_FILES["file"]["error"];
    }else{
        echo "檔案名稱: " . $_FILES["file"]["name"]."<br/>";
        echo "檔案類型: " . $_FILES["file"]["type"]."<br/>";
        echo "檔案大小: " . ($_FILES["file"]["size"] / 1024)." Kb<br />";
        echo "暫存名稱: " . $_FILES["file"]["tmp_name"]."<br>";
    }
    if (file_exists("/upfile/user_photo/" . $_FILES["file"]["name"])){
        echo "檔案已經存在,請勿重覆上傳相同檔案";
    }else{
        move_uploaded_file($_FILES["file"]["tmp_name"],"/user_photo".$_FILES["file"]["name"]);
    }

‵‵‵

小弟我是個剛剛才學PHP的新手
請問,我的錯誤是在哪裡呢
資料夾權限已經開了
路徑如果設錯了,PHP會有警告
執行結果也沒出現警告
可是為甚麼我的資料夾內還是空的呢!!
有沒有人可以為我指點迷津呢!!

看更多先前的討論...收起先前的討論...
柯柯 iT邦新手 3 級 ‧ 2018-09-27 15:52:14 檢舉
圖有點小 看不清楚@@
froce iT邦大師 1 級 ‧ 2018-09-27 16:01:02 檢舉
眼力大挑戰...
在等我一下喔~
我改一下@@
Homura iT邦高手 1 級 ‧ 2018-09-27 16:06:44 檢舉
程式碼直接貼上來吧...
記得用
```
```
包起來
抱歉讓大家看的那麼辛苦
我這個也是第一次用....
柯柯 iT邦新手 3 級 ‧ 2018-09-27 16:14:08 檢舉
你看一下 你work 根目錄有沒有user_photo的資料夾
有的!
柯柯 iT邦新手 3 級 ‧ 2018-09-27 16:38:01 檢舉
那就是 你move_uploaded_file的時候 路徑打錯囉
你上傳的檔案應該是傳到work/user_photo資料夾內了
而不是work/upfile/user_photo內喔

move_uploaded_file($_FILES["file"]["tmp_name"],"/upfile/user_photo/".$_FILES["file"]["name"]);
路徑改成這樣 應該就可以在你要的那個資料夾內了
可是我資料夾路徑是
D:\\XAMPP\htdocs\Work\upfile\uesr_photo
這樣子@@
柯柯 iT邦新手 3 級 ‧ 2018-09-27 16:59:09 檢舉
網頁
'/abc.html' 就是 網站根目錄底下的abc.html

https://dotblogs.com.tw/im_sqz777/2017/07/26/220713
我的根目錄是htdocs
所以我應該打的是Work/upfile/user_photo
這樣子嗎?
柯柯 iT邦新手 3 級 ‧ 2018-09-27 17:23:13 檢舉
根目錄是你的網站最一開始的資料夾
例如 我網站的連結是 localhost/work 那 work 才是根目錄

記得應該是這樣
如果你沒有設定根目錄 那就是 htdocs 為根目錄喔
http://localhost:8080/Work/upfile/upfile.php
所以我的跟目錄是Work?
那這樣的話我的路徑就是
upfile/user_photo/
這樣嗎~?
柯柯 iT邦新手 3 級 ‧ 2018-09-27 17:35:14 檢舉
對喔 如果是的根目錄是work 那就是 /upfile/user_photo/
如果根目錄是htdocs 就是 /work/upfile/user_photo/

剛剛看了一些資料 xampp的根目錄 好像是 htdocs 才對
沒用過xampp的根目錄 所以不太清楚 @@

不過也可以用相對路徑的方法去作喔
我用xampp都是用相對路徑 哈哈哈
我用絕對路徑
可以了ㄝ~
感謝各位的協助!!
柯柯 iT邦新手 3 級 ‧ 2018-09-27 18:18:51 檢舉
如果是用到伺服器的話 推薦用 相對路徑喔
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
rockfire
iT邦新手 5 級 ‧ 2018-09-27 16:31:36

move_uploaded_file($_FILES["file"]["tmp_name"],"/upfile/user_photo / ".$_FILES["file"]["name"]);

少打斜線?

都有打了ㄝ!!

0

這邊大約看出幾個問題先一項一項說明。

1.其實 rockfire 有說到,從你的程式碼中看到,少打了一個"/"。如果你已經有補上就先跳過吧。

2.路徑的宣告問題。這邊看到你的路行是依"/upfile/user_photo"。這裏使用的路徑為本機實體路徑。而非web路徑。所以你用這樣的路徑來說。實體路徑會變成是 D:\upfile\user_photo
其實你可以先用 dirname(FILE) 來取得你目前這支程式當下的目錄位置。再將其組合使用。
比較不容易碰上路徑的問題

3.可以用 $check = move_uploaded_file(....); 去判斷為真還是否。先了解是否真的有成功運行了。

看更多先前的回應...收起先前的回應...

我想請教您一個問題~
dirname(FILE)我想在後面多加個資料夾路徑
我該怎麼做
是該dirname(FILE).$xxxx這樣嗎?
還是要用別的做法?

其實你這個問題算是多此一問。
你只要自行寫個小程式來自行試一下就可以了解了。
我是很討厭這樣連試都還沒試就問的人。

如果說試了還搞不清楚或是出現錯誤的情況下再來問。
這還沒關係。

自行推測及測試的用法先給你
echo print 一般直接輸出,此無法輸出陣列
print_r() 單純輸出陣列或物件值
var_dupmp() 想了解函數的輸出類型為何可以用這個。這輸出的資訊很多。

其實我有先試過了
可是最後的時候
他出來的東西會是
Work/User/photo$xxx
這樣子!

我已經解決了那個問題~
不過現在出現新的問題了
我可以再次請教你嗎~?

我要發表回答

立即登入回答