在WebDev站点上经常看到的一个问题是关于文件上传的。在这篇文章里我将解释如何用PHP实现文件
上传。 设计上传表格
我们主要的目标是完成文件从本地计算机上传到服务器上去。为了做到这一点,我们需要做一个表
格,允许用户选择一个文件并可以提交它。下面是一个例子:
<HTML>
<HEAD>
<TITLE>文件上传表格</TITLE>
</HEAD>
<BODY>
<TABLE>
<FORM ENCTYPE="multipart/form-data" NAME=MyForm
ACTION=submit.php3
METHOD="POST">
<TR><TD>选择上传文件</TD><TD><INPUT NAME="MyFile"
TYPE="File"></TD></TR>
<TR><TD COLSPAN="2"><INPUT NAME="submit" VALUE="上传"
TYPE="submit"></TD></TR>
</TABLE>
</BODY>
</HTML>
注意表格中的ENCTYPE="multipart/form-data"部分。这个一定不能错,否则服务器将不知道你在上
传文件。
设计上传程序
现在我们已经完成了前台部分,让我们再仔细地考虑后台是如何接收文件并保存它到我们指定的目
录下去。下面就开始用PHP了。这是submit.php3的程序:
<?
If($MyFile != "none") {
copy($MyFile,"/home/berber/$MyFile_name");
unlink($MyFile);
}
else {
echo"你没有上传任何文?;
}
?>
不管你信不信,这就是整个处理过程。我们在程序中所做的就是:
1. 检查是否一个文件已经上传到服务器,通过If($MyFile != "none");
2. 拷贝文件到指定位置。
3. 删除临时文件。
当你按下了提交按钮后,文件将会从你的计算机上传到服务器的临时目录下。在临时目录下的文件
名为一个临时文件。应该使用file字段的name值来访问它,在这里为$MyFile。真正的文件名使用file
字段的name值加上"_name"来访问它,在这里为$MyFile_name。使用copy()函数,将临时文件$MyFile拷
贝到指定目录下,拷贝后的文件名为$MyFile_name。完成后不要忘了删除临时文件,不然你会有许多你
不想要的文件。
设置文件名
一个可能让程序员睡不着觉的事情就是试图改变file字段的VALUE属性的值。并不是很多人知道它
是不可能的。尽管W3C说可以,但实际上,象IE和Netscape都不允许设置VAUE属性的值。听上去有点可
笑,为什么我不能设置一个初始值,这样让用户使用起来更方便呢?如果你那样做,那你就会发现你带
来了一个安全上的漏洞。可以设想一下,你登录到我的网站,我可以改变一个表格中的file字段的值。
那么有许能阻止我把你的/etc/passwd文件上传呢?更进一步的,我不需要你按下提交按钮,我可先设
置file字段的值,然后通过一段JavaScript程序来模拟提交动作…哇呜…我可以处理你机器上的任何
文件了。因为这个原因,浏览器简单地把<INPUT>标记中的file字段的VALUE字段给忽略了。
限制文件大小
另一个酷的特性是限制上传文件的大小选项。只要增加一个<INPUT>标记就可以了:
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
这个将不允许用户上传超过100KB的文件。
显示文件大小
为了显示文件大小,可以通过file字段name属性值加上"_size"这个变量来访问。在我们的例子中
就是使用$MyFile_size。所以,如果你想告诉用户上传文件的大小,你可以象下面那样去做:
echo "You have just uploaded $MyFile_name";
echo "The size of the file is $MyFile_size";
权限
很明显你需要对目标目录的写的权限。如果一个用户用匿文上传文件,那他的用户名应该是
"bobody"。这个用户必须有对目标目录写的权限否则你可能得到一个象下面的信息:
Warning: Unable to create ‘/home/berber/berber.txt’:
Permission denied
in /home/berber/submit.php3 on line 5
波比源码 » 怎样用PHP实现文件上传
levofloxacin 250mg cheap buy levaquin pills
buy modafinil online cheap Cialis online us diamox pills
buspar online order order oxybutynin ditropan 5mg drug
bupropion 150mg tablet buy zyban 150 mg online seroquel 50mg oral
buy generic lasix order doxycycline pill plaquenil 400mg ca
buy norvasc for sale amlodipine online cialis black
tadalafil order online order cialis order sildenafil 50mg pills
sumatriptan over the counter purchase dutasteride online order avodart 0.5mg sale
generic colchicine 0.5mg oral colchicine 0.5mg online casino real money us
sildenafil 200mg for sale sildenafil canada buy lamotrigine 50mg generic
sildenafil 100 mg buy viagra sale cialis generic
cost zithromax buy azithromycin 250mg generic neurontin 600mg sale
buy tadacip 20mg online cheap indocin 50mg over the counter indomethacin 75mg price
purchase clarithromycin sale buy clonidine 0.1 mg pill antivert 25 mg uk
buy spiriva 9mcg online buy terazosin 1mg for sale buy hytrin online cheap
buy pioglitazone 30mg generic viagra professional order sildenafil 50mg sale
singulair without prescription sildenafil generic sildenafil 50mg us
cialis for sale online Approved cialis casino slots gambling
win real money online casino for free play poker online for real money real money slots free spins no deposit
ivermectin buy uk oral stromectol 6mg order avlosulfon online
best play money poker sites hollywood casino online real money best real casino online
buy adalat generic purchase allegra generic fexofenadine 120mg ca
play slots for real money united states speechwriters my father essay writing
my mother essay writing buy generic leflunomide 20mg azulfidine 500 mg cost
asacol 800mg generic order generic irbesartan 150mg brand irbesartan 150mg
clobetasol order online clobetasol cost cordarone brand
buy digoxin generic order digoxin 250 mg without prescription molnupiravir usa
amoxil pills stromectol 6mg drug ivermectin 3mg for people
priligy 60mg brand buy dapoxetine 90mg order domperidone 10mg sale
Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across. Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…
order nortriptyline 25mg generic purchase panadol generic buy paxil 20mg online
famotidine 40mg price pepcid 40mg drug purchase remeron
buy doxycycline 200mg online cheap medrol brand name order medrol generic
ropinirole price brand trandate 100mg trandate medication
tadalafil 10mg canada clopidogrel order buy amoxicillin 500mg
order tricor 160mg generic order tricor 160mg pills buy sildenafil online
Thank you for content. Area rugs and online home decor store. Hello Administ . Onwin , Onwin Giriş , Onwin Güncel Giriş , Onwin Yeni Adres , onwin
order provigil 100mg online cheap provigil for sale buy phenergan generic
buy clomid 100mg generic generic clomid 100mg prednisolone 20mg price
order ventolin inhalator online cheap oral augmentin 625mg augmentin price
order isotretinoin 10mg sale azithromycin 250mg pill azithromycin brand
provigil price lisinopril 2.5mg brand metoprolol 100mg price
dutasteride tablet order keflex 125mg pills xenical 60mg usa
order doxycycline 100mg online buy monodox generic zovirax 400mg cost
azathioprine 50mg sale purchase naprosyn naproxen 500mg pills
ditropan 2.5mg over the counter buy oxybutynin 5mg generic buy trileptal 600mg
uroxatral 10 mg cheap order diltiazem online cheap order diltiazem generic
how to buy levaquin oral ursodiol cost zyban
coumadin cost order coumadin 2mg online allopurinol 100mg usa
order generic cetirizine 10mg atomoxetine generic sertraline 50mg pills
cenforce price brand aralen order glycomet generic
buy generic letrozole 2.5 mg order viagra buy sildenafil 50mg without prescription
tadalafil 40mg cheap cialis prescription online ed medications
provigil 200mg pill purchase phenergan online order prednisone 10mg generic
order gabapentin 600mg pill cost furosemide 100mg vibra-tabs us
buy prednisolone 10mg sale prednisolone 40mg oral purchase furosemide generic
cheap doxycycline 100mg generic augmentin 375mg order amoxiclav online
cheap generic levoxyl clomiphene 100mg for sale vardenafil 20mg price
albenza 400 mg price medroxyprogesterone medication medroxyprogesterone 10mg us
cost praziquantel 600 mg biltricide 600mg canada cyproheptadine sale
lisinopril 5mg us cheap zestril lopressor 50mg tablet
lyrica 150mg generic loratadine 10mg brand order dapoxetine 60mg generic
purchase orlistat generic order zovirax 400mg pill buy allopurinol tablets
losartan over the counter buy cozaar generic topiramate 100mg us
generic rosuvastatin 20mg order motilium 10mg generic cost domperidone
imitrex medication buy imitrex 50mg generic how to get avodart without a prescription
generic tetracycline order baclofen 25mg online cheap order ozobax
buy ketorolac generic propranolol drug buy cheap propranolol
zantac usa zantac pills purchase celebrex generic
clopidogrel 75mg over the counter fluvoxamine 100mg price how to buy ketoconazole
tamsulosin 0.4mg pills purchase spironolactone pills aldactone 25mg without prescription
ipratropium online order buy ipratropium generic brand linezolid 600 mg
how to buy prometrium zyprexa 10mg uk how to get zyprexa without a prescription
nebivolol 20mg brand cheap diovan 160mg buy clozapine generic
order zocor 10mg without prescription order generic valtrex viagra on line
order tegretol 200mg sale buy ciprofloxacin 500mg pill purchase lincomycin for sale
cefadroxil 500mg drug buy finasteride 1mg generic buy propecia sale
cialis 10mg pill cialis 40mg pill viagra 50mg pill
fluconazole brand cheap ampicillin 500mg buy ciprofloxacin 500mg
cost metronidazole 400mg cephalexin pill purchase keflex generic
cleocin 150mg for sale buy erythromycin 500mg for sale buy ed pill
order avanafil 200mg pills buy tadalafil 20mg pill buy diclofenac 100mg pill
careprost brand buy robaxin desyrel pill
amoxicillin 500mg pill buy arimidex online buy generic clarithromycin 250mg
order suhagra 50mg pill order sildenafil generic purchase sildalis pills
ramipril 5mg over the counter order glimepiride 1mg without prescription order arcoxia 60mg online
levitra 20mg for sale vardenafil 20mg drug generic plaquenil 200mg
mesalamine tablet order avapro 150mg generic order avapro 150mg online cheap
cost clobetasol buy buspirone for sale cheap amiodarone
buy diamox 250 mg generic buy diamox online cheap azathioprine pill
carvedilol 25mg brand chloroquine 250mg pills chloroquine pills
lanoxin 250mg oral where can i buy digoxin molnupiravir cost
buy generic naprosyn for sale buy cefdinir 300mg cheap prevacid 30mg
buy proventil sale buy albuterol 100 mcg for sale pyridium for sale
singulair online buy montelukast 5mg us avlosulfon pills
order generic adalat 30mg nifedipine pill buy allegra 120mg for sale
amlodipine ca buy norvasc order generic prilosec
priligy 90mg oral order generic xenical buy orlistat medication
tetracycline online order cyclobenzaprine 15mg pills order generic baclofen 10mg
brand ketorolac oral toradol buy inderal medication
how to buy trimethoprim buy cheap clindamycin cleocin 300mg pills
clopidogrel 75mg oral plavix 150mg ca coumadin 5mg tablet
buy erythromycin 250mg online cheap erythromycin 250mg without prescription tamoxifen 20mg sale
reglan 10mg oral esomeprazole 20mg generic order esomeprazole
buy rhinocort no prescription careprost nasal spray careprost medication
buy dutasteride pill order zantac 150mg for sale order mobic online
female cialis pill tadalafil liquid sildenafil cost
tadalafil 10mg price generic ed pills non prescription erection pills
lamisil 250mg pills order lamisil online cheap trimox for sale online
order azulfidine 500 mg buy olmesartan generic buy calan paypal
azathioprine 25mg generic order imuran pills order telmisartan 80mg
molnunat 200 mg pills buy generic cefdinir for sale order omnicef 300mg for sale
where to buy ed pills online cheap viagra tablets sildenafil 100mg generic
purchase lansoprazole generic prevacid canada buy pantoprazole 20mg online cheap
fexofenadine us order altace pills how to get glimepiride without a prescription
purchase arcoxia without prescription astelin 10 ml tablet buy astelin 10 ml without prescription
cheap albenza 400 mg buy provera without a prescription medroxyprogesterone 10mg for sale
order praziquantel 600 mg generic microzide pills generic periactin
buy nitrofurantoin without a prescription buy pamelor 25 mg for sale order nortriptyline sale
buy glipizide 5mg online order glucotrol 5mg for sale purchase betnovate
buy clomipramine online order prometrium 100mg brand prometrium 200mg
buy cheap valsartan diovan 80mg ca buy combivent pill
decadron oral buy starlix 120 mg nateglinide 120mg cheap
ciprofloxacin 500mg usa order ciplox 500mg online cheap buy generic duricef 250mg
buy seroquel 50mg without prescription escitalopram 20mg pills purchase lexapro online cheap
order frumil 5 mg online cheap buy generic clindamycin over the counter purchase acivir cream
buy generic bisoprolol online buy terramycin paypal generic terramycin 250mg
valcivir 1000mg cost valaciclovir over the counter buy generic floxin online