在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