一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

利用php的文件函數(shù)來(lái)實(shí)現(xiàn)上傳

 米米道 2011-12-15

利用php的文件函數(shù)來(lái)實(shí)現(xiàn)上傳

這段代碼分為兩個(gè)文件,一個(gè)為upload.html,一個(gè)是upload.php

  • upload.html
<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>

其中,

  1. 請(qǐng)注意<form enctype="multipart/form-data"......>這是一個(gè)標(biāo)簽,我們要實(shí)現(xiàn)文件的上傳,必須指定為multipart/form-data,否則服務(wù)器將不知道要干什么。
  2. 值得注意的是文件upload.html中表單選項(xiàng) MAX_FILE_SIZE 的隱藏值域,通過(guò)設(shè)置其Value(值)可以限制上載文件的大小。
  3. MAX_FILE_SIZE 的值只是對(duì)瀏覽器的一個(gè)建議,實(shí)際上它可以被簡(jiǎn)單的繞過(guò)。因此不要把對(duì)瀏覽器的限制寄希望于該值。實(shí)際上,PHP 設(shè)置中的上傳文件最大值,是不會(huì)失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因?yàn)樗梢员苊庥脩?hù)在花時(shí)間等待上傳大文件之后才發(fā)現(xiàn)該文件太大了的麻煩。
  • upload.php
$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)可隨意命名)

  • $_FILES['userfile']['name'] 客戶(hù)端機(jī)器文件的原名稱(chēng)。
  • $_FILES['userfile']['type'] 文件的 MIME 類(lèi)型,需要瀏覽器提供該信息的支持,例如“image/gif”。
  • $_FILES['userfile']['size'] 已上傳文件的大小,單位為字節(jié)。
  • $_FILES['userfile']['tmp_name'] 文件被上傳后在服務(wù)端儲(chǔ)存的臨時(shí)文件名。
  • $_FILES['userfile']['error'] 和該文件上傳相關(guān)的錯(cuò)誤代碼
  1. 值:0; 沒(méi)有錯(cuò)誤發(fā)生,文件上傳成功。
  2. 值:1; 上傳的文件超過(guò)了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值。
  3. 值:2; 上傳文件的大小超過(guò)了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。
  4. 值:3; 文件只有部分被上傳。
  5. 值:4; 沒(méi)有文件被上傳。

PHP上傳文件涉及到的參數(shù)

PHP默認(rèn)的上傳限定是最大2M,想上傳超過(guò)此設(shè)定的文件,需要調(diào)整PHP、apache等的一些參數(shù). 下面,我們簡(jiǎn)要介紹一下PHP文件上傳涉及到的一些參數(shù):

  • file_uploads

是否允許通過(guò)HTTP上傳文件的開(kāi)關(guān),默認(rèn)為ON即是開(kāi)

  • upload_tmp_dir

upload_tmp_dir用來(lái)說(shuō)明PHP上傳的文件放置的臨時(shí)目錄,要想上傳文件,得保證服務(wù)器沒(méi)有關(guān)閉臨時(shí)文件和有對(duì)文件夾的寫(xiě)權(quán)限,如果未指定則PHP使用系統(tǒng)默認(rèn)值

  • upload_max_filesize

允許上傳文件大小的最大值,默認(rèn)為2M

  • post_max_size

控制在采用POST方法進(jìn)行一次表單提交中PHP所能夠接收的最大數(shù)據(jù)量。如果希望使用PHP文件上傳功能,則需要將此值改為比upload_max_filesize要大

  • max_input_time

以秒為單位對(duì)通過(guò)POST、GET以及PUT方式接收數(shù)據(jù)時(shí)間進(jìn)行限制。如果應(yīng)用程序所運(yùn)行環(huán)境處在低速鏈路上,則需要增加此值以適應(yīng)接收數(shù)據(jù)所需的更多時(shí)間

  • memory_limit

為了避免正在運(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

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)閉

  • 對(duì)于linux主機(jī),可能在/etc/httpd/conf.d/access.conf/下面里面還有php.conf 文件,這個(gè)文件可能會(huì)解決一些系統(tǒng)的文件大小限制問(wèn)題

利用discuz實(shí)現(xiàn)PHP大文件上傳應(yīng)用舉例


論壇的附件功能當(dāng)初設(shè)計(jì)的初衷并不是為了文件管理,由于服務(wù)器配置,php,網(wǎng)絡(luò)等多方面因素,使得通過(guò)論壇上傳文件并不是一個(gè)好方案。

對(duì)于確實(shí)需要改善論壇附件上傳條件的朋友可以嘗試將上面提及的參數(shù)在php.ini進(jìn)行設(shè)置,以適應(yīng)大文件上傳的需要。同時(shí)別忘記在論壇的后臺(tái)相應(yīng)做附件限制的地方進(jìn)行設(shè)置。

論壇主要有2個(gè)地方可以對(duì)附件上傳的大小進(jìn)行限制,級(jí)別從高到低依次為:

  • 帖子相關(guān)---附件類(lèi)型尺寸
  • 用戶(hù)組---附件相關(guān)

同時(shí),下面提供一個(gè)配置指導(dǎo),來(lái)源一些成功通過(guò)http上傳大附件的朋友的提供,當(dāng)然,由于大家的服務(wù)器配置情況以及網(wǎng)絡(luò)情況不同,并不一定適用你的情況,可能很多地方需要參照修改:

打開(kāi)php.ini,

參數(shù) 設(shè)置 說(shuō)明
file_uploads on 是否允許通過(guò)HTTP上傳文件的開(kāi)關(guān)。默認(rèn)為ON即是開(kāi)
upload_tmp_dir -- 文件上傳至服務(wù)器上存儲(chǔ)臨時(shí)文件的地方,如果沒(méi)指定就會(huì)用系統(tǒng)默認(rèn)的臨時(shí)文件夾
upload_max_filesize 8m 望文生意,即允許上傳文件大小的最大值。默認(rèn)為2M
post_max_size 8m 指通過(guò)表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認(rèn)為8M
說(shuō)明
一般地,設(shè)置好上述四個(gè)參數(shù)后,在網(wǎng)絡(luò)正常的情況下,上傳<=8M的文件是不成問(wèn)題
但如果要上傳>8M的大體積文件,只設(shè)置上述四項(xiàng)還一定能行的通。除非你的網(wǎng)絡(luò)真有100M/S的上傳高速,否則你還得繼續(xù)設(shè)置下面的參數(shù)。
max_execution_time 600 每個(gè)PHP頁(yè)面運(yùn)行的最大時(shí)間值(秒),默認(rèn)30秒
max_input_time 600 每個(gè)PHP頁(yè)面接收數(shù)據(jù)所需的最大時(shí)間,默認(rèn)60秒
memory_limit 8m 每個(gè)PHP頁(yè)面所吃掉的最大內(nèi)存,默認(rèn)8M

把上述參數(shù)修改后,在網(wǎng)絡(luò)所允許的正常情況下,就可以上傳大體積文件了

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    免费特黄一级一区二区三区| 沐浴偷拍一区二区视频| 少妇在线一区二区三区| 亚洲中文在线男人的天堂| 国产成人精品午夜福利av免费| 国产乱淫av一区二区三区| 美女被草的视频在线观看| 免费一区二区三区少妇| 欧美一区日韩二区亚洲三区| 日韩精品中文字幕在线视频| 亚洲日本加勒比在线播放| 国产欧美日韩在线精品一二区| 亚洲成人久久精品国产| 熟女一区二区三区国产| 午夜精品一区二区三区国产| 日韩精品区欧美在线一区| 婷婷激情四射在线观看视频| 国产老熟女乱子人伦视频| 91播色在线免费播放| 日韩中文字幕欧美亚洲| 国产成人精品一区二区在线看| 黄片三级免费在线观看| 久久99亚洲小姐精品综合| 91熟女大屁股偷偷对白| 国产一区二区三区丝袜不卡| 超碰在线播放国产精品| 好吊妞在线免费观看视频| 国产精品午夜福利免费阅读| 太香蕉久久国产精品视频| 超碰在线免费公开中国黄片| 午夜色午夜视频之日本| 日本午夜福利视频免费观看| 欧美日韩综合在线精品| 亚洲国产日韩欧美三级| 内射精子视频欧美一区二区| 日本加勒比在线播放一区| 日韩不卡一区二区在线| 91熟女大屁股偷偷对白| 国产又大又硬又粗又黄| 午夜精品国产一区在线观看| 在线懂色一区二区三区精品|