頁: [1]
|
 |
|
作者
|
主題: 檔案上傳的問題 (閱讀 1980 次)
|
taocenter
訪客
|
 |
檔案上傳的問題
« 於: 2005-05-08, 22:10:45 » |
|
我想請問在楊宗誌寫的「PHP+IIS+SQL Server網站資料庫徹底研究」中的第十三章的檔案上傳的問題 在13-4頁中的倒數第三行說:「上傳檔案的存放位置,也就是放置上傳檔案的目錄資料夾,其寫入的權限必須打開,......」 請問要如何將目錄資料夾寫入的權限打開? 我執行檔案上傳的範例程式時,出現錯誤,檔案並沒有上傳,我猜可能是寫入的權限沒有打開的原因 執行範例程式時,出現的錯誤訊息如下:
上傳檔案相關資訊: --------------------------------------------------------------------------------
檔案名稱:test.txt 檔案大小:4 檔案類型:text/plain 暫存檔名:C:\PHP\uploadtemp\php3D.tmp
Warning: move_uploaded_file(file\test.txt) [function.move-uploaded-file]: failed to create stream: No such file or directory in D:\Web\mygetfilen.php on line 14
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\uploadtemp\php3D.tmp' to 'file\test.txt' in D:\Web\mygetfilen.php on line 14 您所上傳的檔案已儲存為 test.txt --------------------------------------------------------------------------------
|
|
|
|
|
已記錄
|
|
|
|
|
小誌
|
檔案名稱:test.txt 檔案大小:4 檔案類型:text/plain 暫存檔名:C:\PHP\uploadtemp\php3D.tmp 你必須先建立暫存資料夾於c磁碟,看你的錯誤提示暫存資料夾是建在C:\PHP\uploadtemp\ 再建立一個存放上傳檔案的資料夾 Step1:在存放上傳的資料夾圖示上按滑鼠右鍵-->內容-->"安全性"頁籤 Step2:新增一個使用者"Everyone" Step3:將使用者"Everyone"的寫入權限打開  若看不到安全性頁籤 在檔案總管中選取工具-->資料夾選項-->"檢視"頁籤 將"使用簡易檔案共用"的項目取消核取 
|
|
|
|
« 最後編輯時間: 2005-05-08, 22:55:25 由 小誌 »
|
已記錄
|
|
|
|
taocenter
訪客
|
 |
多檔案上傳的問題
« 回覆文章 #2 於: 2005-05-09, 09:51:09 » |
|
請問在「PHP+IIS+SQL Server網站資料庫徹底研究中」的「多檔案上傳」的13-8頁
在「uploadm.php」中的upfile[]陣列只有三個元素, 可是在「mygetfilem.php」中的count($_FILES["upfile"])為何變成5了?
-------------------------------------------------------------------------------------- uploadm.php
<HTML><BODY> <H3>FTP 檔案上傳:(傳送多個檔案)<HR></H3>
<Form Action="mygetfilem.php" Method="POST" Enctype="multipart/form-data"> <Input Type="File" Name="upfile[]" >
<Input Type="File" Name="upfile[]" >
<Input Type="File" Name="upfile[]" >
<Input Type="Submit" value=" 開始上傳 "> </Form>
</BODY></HTM>
---------------------------------------------------------------------------------------- mygetfilem.php
<HTML> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title>多檔案上傳</title> </head> <BODY><H3>上傳多檔案相關資訊:<HR></H3>
<? echo count($_FILES["upfile"])."<p>"; for ( $I=0; $I < (count($_FILES["upfile"])-2); $I++ ) { echo "<BLOCKQUOTE>"; if ( $_FILES["upfile"]["name"][$I] <> "" ) { echo "檔案名稱:" . $_FILES["upfile"]["name"][$I] . "<BR>"; echo "檔案大小:" . $_FILES["upfile"]["size"][$I] . "<BR>"; echo "檔案類型:" . $_FILES["upfile"]["type"][$I] . "<BR>"; echo "暫存檔名:" . $_FILES["upfile"]["tmp_name"][$I] . "<BR>"; //檢驗檔案大小是否大於0 if ( $_FILES["upfile"]["size"][$I] <= 0) { echo "上傳檔案錯誤!您傳送的是空檔案!!"; echo "</BLOCKQUOTE>"; } //檢驗檔案體積是否過大 else if ( $_FILES["upfile"]["size"][$I] > 50000) { echo "上傳檔案錯誤!您傳送的檔案大於50k!!"; echo "</BLOCKQUOTE>"; } else { move_uploaded_file($_FILES["upfile"]["tmp_name"][$I], "file\\" . $_FILES["upfile"]["name"][$I]); echo "您所上傳的檔案已儲存為 " . $_FILES["upfile"]["name"][$I]; echo "</BLOCKQUOTE>"; } } } ?>
<HR></BODY></HTML>
|
|
|
|
|
已記錄
|
|
|
|
|
小誌
|
問的好!!  您的求學精神值得鼓勵  為什麼是5個?因為 count($_FILES["upfile"]取得的是檔案物件的屬性並非真正的上傳檔案個數 要判定有幾個上傳檔案應該從檔案物件的 屬性下手,例如檔案名稱["name"],如以下的範例 <? echo count($_FILES["upfile"]["name"])."<p>"; for ( $I=0; $I < (count($_FILES["upfile"]["name"])); $I++ ) ... 我以為這個伏筆問題永遠都沒有人會提出了,沒想到還是有認真求問的學習者出現,我記住你了  方便PM給我個人資料嗎? 
|
|
|
|
|
已記錄
|
|
|
|
taocenter
訪客
|
你說:「因為count($_FILES["upfile"]取得的是檔案物件的屬性並非真正的上傳檔案個數」 那麼檔案物件的屬性有五個囉! 可是在13-4頁只有列出四個: 1.name 2.size 3.type 4.tmp_name 那麼第五個屬性是? 謝謝
|
|
|
|
|
已記錄
|
|
|
|
|
小誌
|
1.name 2.size 3.type 4.tmp_name 那麼第五個屬性是? 謝謝
嗯....好吧,這次我就直接回答你,下次我就回答方向,正確的答案由你來告訴大家囉 第五個屬性是 errorUPLOAD_ERR_OK 值:0; 沒有錯誤發生。 UPLOAD_ERR_INI_SIZE 值:1; 檔案大小超過了 php.ini 中 upload_max_filesize 選項限制的值。 UPLOAD_ERR_FORM_SIZE 值:2; 檔案大小超過超過了 HTML 表單(form標籤)中 MAX_FILE_SIZE 選項指定的值。 UPLOAD_ERR_PARTIAL 值:3; 檔案只完成部份上傳。 UPLOAD_ERR_NO_FILE 值:4; 檔案沒被上傳。
|
|
|
|
|
已記錄
|
|
|
|
|
頁: [1]
|
|
|
|