利用php的文件函數(shù)來(lái)實(shí)現(xiàn)上傳這段代碼分為兩個(gè)文件,一個(gè)為upload.html,一個(gè)是upload.php
<form enctype="multipart/form-data" action="upload.php" method="post"> <input type="hidden" name="max_file_size" value="100000"> <input name="userfile" type="file"> <input type="submit" value="上傳文件"> </form> 其中,
$f=&$HTTP_POST_FILES['Myfile']; $dest_dir='uploads';//設(shè)定上傳目錄 $dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//設(shè)置文件名為日期加上文件名避免重復(fù) $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//設(shè)定上傳的文件的屬性 或者 <?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?> 以上范例中 $_FILES 數(shù)組的內(nèi)容如下所示。我們假設(shè)文件上傳字段的名稱(chēng)為 userfile(名稱(chēng)可隨意命名)
[編輯]
PHP上傳文件涉及到的參數(shù)PHP默認(rèn)的上傳限定是最大2M,想上傳超過(guò)此設(shè)定的文件,需要調(diào)整PHP、apache等的一些參數(shù). 下面,我們簡(jiǎn)要介紹一下PHP文件上傳涉及到的一些參數(shù):
是否允許通過(guò)HTTP上傳文件的開(kāi)關(guān),默認(rèn)為ON即是開(kāi)
upload_tmp_dir用來(lái)說(shuō)明PHP上傳的文件放置的臨時(shí)目錄,要想上傳文件,得保證服務(wù)器沒(méi)有關(guān)閉臨時(shí)文件和有對(duì)文件夾的寫(xiě)權(quán)限,如果未指定則PHP使用系統(tǒng)默認(rèn)值
允許上傳文件大小的最大值,默認(rèn)為2M
控制在采用POST方法進(jìn)行一次表單提交中PHP所能夠接收的最大數(shù)據(jù)量。如果希望使用PHP文件上傳功能,則需要將此值改為比upload_max_filesize要大
以秒為單位對(duì)通過(guò)POST、GET以及PUT方式接收數(shù)據(jù)時(shí)間進(jìn)行限制。如果應(yīng)用程序所運(yùn)行環(huán)境處在低速鏈路上,則需要增加此值以適應(yīng)接收數(shù)據(jù)所需的更多時(shí)間
為了避免正在運(yùn)行的腳本大量使用系統(tǒng)可用內(nèi)存,PHP允許定義內(nèi)存使用限額。通過(guò)memory_limit變量來(lái)指定單個(gè)腳本程序可以使用的最大內(nèi)存容量變量memory_limit的值應(yīng)當(dāng)適當(dāng)大于post_max_size的值
max_execution_time設(shè)置了在強(qiáng)制終止腳本前PHP等待腳本執(zhí)行完畢的時(shí)間,此時(shí)間以秒計(jì)算。當(dāng)腳本進(jìn)入了一個(gè)無(wú)限循環(huán)狀態(tài)時(shí)此變量非常有用。然而,當(dāng)存在一個(gè)需要很長(zhǎng)時(shí)間完成的合法活動(dòng)時(shí)(例如上傳大型文件),這項(xiàng)功能也會(huì)導(dǎo)致操作失敗。在這樣的情況下必須考慮將此變量值增加,以避免PHP在腳本正在執(zhí)行某些重要過(guò)程的時(shí)候?qū)⒛_本關(guān)閉
[編輯]
利用discuz實(shí)現(xiàn)PHP大文件上傳應(yīng)用舉例
對(duì)于確實(shí)需要改善論壇附件上傳條件的朋友可以嘗試將上面提及的參數(shù)在php.ini進(jìn)行設(shè)置,以適應(yīng)大文件上傳的需要。同時(shí)別忘記在論壇的后臺(tái)相應(yīng)做附件限制的地方進(jìn)行設(shè)置。 論壇主要有2個(gè)地方可以對(duì)附件上傳的大小進(jìn)行限制,級(jí)別從高到低依次為:
同時(shí),下面提供一個(gè)配置指導(dǎo),來(lái)源一些成功通過(guò)http上傳大附件的朋友的提供,當(dāng)然,由于大家的服務(wù)器配置情況以及網(wǎng)絡(luò)情況不同,并不一定適用你的情況,可能很多地方需要參照修改: 打開(kāi)php.ini,
把上述參數(shù)修改后,在網(wǎng)絡(luò)所允許的正常情況下,就可以上傳大體積文件了 |
|
來(lái)自: 米米道 > 《網(wǎng)站》