前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP学习笔记——文件上传

PHP学习笔记——文件上传

作者头像
行云博客
发布2020-07-13 10:45:17
1.8K0
发布2020-07-13 10:45:17
举报
文章被收录于专栏:行云博客

创建一个文件上传表单

代码语言:javascript
复制
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>

</body>
</html>
  • 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 “multipart/form-data”。
  • 标签的 type=“file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
创建上传脚本
代码语言:javascript
复制
<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
    echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
    echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
    echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 “name”、“type”、“size”、“tmp_name” 或 “error”。如下所示:

  • $_FILES[“file”][“name”] - 上传文件的名称
  • $_FILES[“file”][“type”] - 上传文件的类型
  • $_FILES[“file”][“size”] - 上传文件的大小,以字节计
  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称
  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码
上传限制
代码语言:javascript
复制
<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png", "icon");
$temp = explode(".", $_FILES["file"]["name"]);//explode
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
&& in_array($extension, $allowedExts))//搜索数组中是否存在指定的值。
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "错误:: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
    }
}
else
{
    echo "非法的文件格式";
}
?>
保存被上传的文件
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
<?php  
$file_type = array("gif", "png", "jpeg", "jpg", "icon");
$temp = explode('.', $_FILES["file"]["name"]);
$houzhui = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/icon"))
&& ($_FILES["fiel"]["size"] < 1024000)  //小于1M
&& in_array($houzhui, $file_type))//搜索数组中是否存在指定的值。
{
    if ($_FILES["file"]["error"] > 0) {
        echo "文件错误".$_FILES["file"]["error"]."<br>" ;
    }
    else{
        echo "文件名称:".$_FILES["file"]["name"]."<br>";
        echo "文件类型:".$_FILES["file"]["type"]."<br>";
        echo "文件大小:".($_FILES["file"]["size"] / 1024)."KB<br>";
        echo "文件临时储存位置:".$_FILES["file"]["tmp_name"]."<br>";
    }

    if (file_exists("upload/".$_FILES["file"]["name"])) {

        echo $_FILES["file"]["name"]."文件已存在<br>";
    }
    else{
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/"."upload.".$houzhui);
        echo "文件储存在:"."upload/"."upload.".$houzhui."<br>";
    }
}
else{
    echo "文件格式非法<br>";

}
    echo "上传时间:".date("Y-m-d H:i:s");

?>

</body>
</html>

php临时文件目录更改:位于php.ini文件的794行upload_tmp_dir =E:\phpstudy

MIME 类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

官方的 MIME 信息是由 Internet Engineering Task Force (IETF) 在下面的文档中提供的:

  • RFC-822 Standard for ARPA Internet text messages
  • RFC-2045 MIME Part 1: Format of Internet Message Bodies
  • RFC-2046 MIME Part 2: Media Types
  • RFC-2047 MIME Part 3: Header Extensions for Non-ASCII Text
  • RFC-2048 MIME Part 4: Registration Procedures
  • RFC-2049 MIME Part 5: Conformance Criteria and Examples

不同的应用程序支持不同的 MIME 类型。

下面的参考手册是由 Microsoft Internet Information Server version 5 所支持的 MIME 类型列表。

按照内容类型排列的 Mime 类型列表

类型/子类型

扩展名

application/envoy

evy

application/fractals

fif

application/futuresplash

spl

application/hta

hta

application/internet-property-stream

acx

application/mac-binhex40

hqx

application/msword

doc

application/msword

dot

application/octet-stream

*

application/octet-stream

bin

application/octet-stream

class

application/octet-stream

dms

application/octet-stream

exe

application/octet-stream

lha

application/octet-stream

lzh

application/oda

oda

application/olescript

axs

application/pdf

pdf

application/pics-rules

prf

application/pkcs10

p10

application/pkix-crl

crl

application/postscript

ai

application/postscript

eps

application/postscript

ps

application/rtf

rtf

application/set-payment-initiation

setpay

application/set-registration-initiation

setreg

application/vnd.ms-excel

xla

application/vnd.ms-excel

xlc

application/vnd.ms-excel

xlm

application/vnd.ms-excel

xls

application/vnd.ms-excel

xlt

application/vnd.ms-excel

xlw

application/vnd.ms-outlook

msg

application/vnd.ms-pkicertstore

sst

application/vnd.ms-pkiseccat

cat

application/vnd.ms-pkistl

stl

application/vnd.ms-powerpoint

pot

application/vnd.ms-powerpoint

pps

application/vnd.ms-powerpoint

ppt

application/vnd.ms-project

mpp

application/vnd.ms-works

wcm

application/vnd.ms-works

wdb

application/vnd.ms-works

wks

application/vnd.ms-works

wps

application/winhlp

hlp

application/x-bcpio

bcpio

application/x-cdf

cdf

application/x-compress

z

application/x-compressed

tgz

application/x-cpio

cpio

application/x-csh

csh

application/x-director

dcr

application/x-director

dir

application/x-director

dxr

application/x-dvi

dvi

application/x-gtar

gtar

application/x-gzip

gz

application/x-hdf

hdf

application/x-internet-signup

ins

application/x-internet-signup

isp

application/x-iphone

iii

application/x-javascript

js

application/x-latex

latex

application/x-msaccess

mdb

application/x-mscardfile

crd

application/x-msclip

clp

application/x-msdownload

dll

application/x-msmediaview

m13

application/x-msmediaview

m14

application/x-msmediaview

mvb

application/x-msmetafile

wmf

application/x-msmoney

mny

application/x-mspublisher

pub

application/x-msschedule

scd

application/x-msterminal

trm

application/x-mswrite

wri

application/x-netcdf

cdf

application/x-netcdf

nc

application/x-perfmon

pma

application/x-perfmon

pmc

application/x-perfmon

pml

application/x-perfmon

pmr

application/x-perfmon

pmw

application/x-pkcs12

p12

application/x-pkcs12

pfx

application/x-pkcs7-certificates

p7b

application/x-pkcs7-certificates

spc

application/x-pkcs7-certreqresp

p7r

application/x-pkcs7-mime

p7c

application/x-pkcs7-mime

p7m

application/x-pkcs7-signature

p7s

application/x-sh

sh

application/x-shar

shar

application/x-shockwave-flash

swf

application/x-stuffit

sit

application/x-sv4cpio

sv4cpio

application/x-sv4crc

sv4crc

application/x-tar

tar

application/x-tcl

tcl

application/x-tex

tex

application/x-texinfo

texi

application/x-texinfo

texinfo

application/x-troff

roff

application/x-troff

t

application/x-troff

tr

application/x-troff-man

man

application/x-troff-me

me

application/x-troff-ms

ms

application/x-ustar

ustar

application/x-wais-source

src

application/x-x509-ca-cert

cer

application/x-x509-ca-cert

crt

application/x-x509-ca-cert

der

application/ynd.ms-pkipko

pko

application/zip

zip

audio/basic

au

audio/basic

snd

audio/mid

mid

audio/mid

rmi

audio/mpeg

mp3

audio/x-aiff

aif

audio/x-aiff

aifc

audio/x-aiff

aiff

audio/x-mpegurl

m3u

audio/x-pn-realaudio

ra

audio/x-pn-realaudio

ram

audio/x-wav

wav

image/bmp

bmp

image/cis-cod

cod

image/gif

gif

image/ief

ief

image/jpeg

jpe

image/jpeg

jpeg

image/jpeg

jpg

image/pipeg

jfif

image/svg+xml

svg

image/tiff

tif

image/tiff

tiff

image/x-cmu-raster

ras

image/x-cmx

cmx

image/x-icon

ico

image/x-portable-anymap

pnm

image/x-portable-bitmap

pbm

image/x-portable-graymap

pgm

image/x-portable-pixmap

ppm

image/x-rgb

rgb

image/x-xbitmap

xbm

image/x-xpixmap

xpm

image/x-xwindowdump

xwd

message/rfc822

mht

message/rfc822

mhtml

message/rfc822

nws

text/css

css

text/h323

323

text/html

htm

text/html

html

text/html

stm

text/iuls

uls

text/plain

bas

text/plain

c

text/plain

h

text/plain

txt

text/richtext

rtx

text/scriptlet

sct

text/tab-separated-values

tsv

text/webviewhtml

htt

text/x-component

htc

text/x-setext

etx

text/x-vcard

vcf

video/mpeg

mp2

video/mpeg

mpa

video/mpeg

mpe

video/mpeg

mpeg

video/mpeg

mpg

video/mpeg

mpv2

video/quicktime

mov

video/quicktime

qt

video/x-la-asf

lsf

video/x-la-asf

lsx

video/x-ms-asf

asf

video/x-ms-asf

asr

video/x-ms-asf

asx

video/x-msvideo

avi

video/x-sgi-movie

movie

x-world/x-vrml

flr

x-world/x-vrml

vrml

x-world/x-vrml

wrl

x-world/x-vrml

wrz

x-world/x-vrml

xaf

x-world/x-vrml

xof

按照文件扩展名排列的 Mime 类型列表

扩展名

类型/子类型

application/octet-stream

323

text/h323

acx

application/internet-property-stream

ai

application/postscript

aif

audio/x-aiff

aifc

audio/x-aiff

aiff

audio/x-aiff

asf

video/x-ms-asf

asr

video/x-ms-asf

asx

video/x-ms-asf

au

audio/basic

avi

video/x-msvideo

axs

application/olescript

bas

text/plain

bcpio

application/x-bcpio

bin

application/octet-stream

bmp

image/bmp

c

text/plain

cat

application/vnd.ms-pkiseccat

cdf

application/x-cdf

cer

application/x-x509-ca-cert

class

application/octet-stream

clp

application/x-msclip

cmx

image/x-cmx

cod

image/cis-cod

cpio

application/x-cpio

crd

application/x-mscardfile

crl

application/pkix-crl

crt

application/x-x509-ca-cert

csh

application/x-csh

css

text/css

dcr

application/x-director

der

application/x-x509-ca-cert

dir

application/x-director

dll

application/x-msdownload

dms

application/octet-stream

doc

application/msword

dot

application/msword

dvi

application/x-dvi

dxr

application/x-director

eps

application/postscript

etx

text/x-setext

evy

application/envoy

exe

application/octet-stream

fif

application/fractals

flr

x-world/x-vrml

gif

image/gif

gtar

application/x-gtar

gz

application/x-gzip

h

text/plain

hdf

application/x-hdf

hlp

application/winhlp

hqx

application/mac-binhex40

hta

application/hta

htc

text/x-component

htm

text/html

html

text/html

htt

text/webviewhtml

ico

image/x-icon

ief

image/ief

iii

application/x-iphone

ins

application/x-internet-signup

isp

application/x-internet-signup

jfif

image/pipeg

jpe

image/jpeg

jpeg

image/jpeg

jpg

image/jpeg

js

application/x-javascript

latex

application/x-latex

lha

application/octet-stream

lsf

video/x-la-asf

lsx

video/x-la-asf

lzh

application/octet-stream

m13

application/x-msmediaview

m14

application/x-msmediaview

m3u

audio/x-mpegurl

man

application/x-troff-man

mdb

application/x-msaccess

me

application/x-troff-me

mht

message/rfc822

mhtml

message/rfc822

mid

audio/mid

mny

application/x-msmoney

mov

video/quicktime

movie

video/x-sgi-movie

mp2

video/mpeg

mp3

audio/mpeg

mpa

video/mpeg

mpe

video/mpeg

mpeg

video/mpeg

mpg

video/mpeg

mpp

application/vnd.ms-project

mpv2

video/mpeg

ms

application/x-troff-ms

mvb

application/x-msmediaview

nws

message/rfc822

oda

application/oda

p10

application/pkcs10

p12

application/x-pkcs12

p7b

application/x-pkcs7-certificates

p7c

application/x-pkcs7-mime

p7m

application/x-pkcs7-mime

p7r

application/x-pkcs7-certreqresp

p7s

application/x-pkcs7-signature

pbm

image/x-portable-bitmap

pdf

application/pdf

pfx

application/x-pkcs12

pgm

image/x-portable-graymap

pko

application/ynd.ms-pkipko

pma

application/x-perfmon

pmc

application/x-perfmon

pml

application/x-perfmon

pmr

application/x-perfmon

pmw

application/x-perfmon

pnm

image/x-portable-anymap

pot,

application/vnd.ms-powerpoint

ppm

image/x-portable-pixmap

pps

application/vnd.ms-powerpoint

ppt

application/vnd.ms-powerpoint

prf

application/pics-rules

ps

application/postscript

pub

application/x-mspublisher

qt

video/quicktime

ra

audio/x-pn-realaudio

ram

audio/x-pn-realaudio

ras

image/x-cmu-raster

rgb

image/x-rgb

rmi

audio/mid

roff

application/x-troff

rtf

application/rtf

rtx

text/richtext

scd

application/x-msschedule

sct

text/scriptlet

setpay

application/set-payment-initiation

setreg

application/set-registration-initiation

sh

application/x-sh

shar

application/x-shar

sit

application/x-stuffit

snd

audio/basic

spc

application/x-pkcs7-certificates

spl

application/futuresplash

src

application/x-wais-source

sst

application/vnd.ms-pkicertstore

stl

application/vnd.ms-pkistl

stm

text/html

svg

image/svg+xml

sv4cpio

application/x-sv4cpio

sv4crc

application/x-sv4crc

swf

application/x-shockwave-flash

t

application/x-troff

tar

application/x-tar

tcl

application/x-tcl

tex

application/x-tex

texi

application/x-texinfo

texinfo

application/x-texinfo

tgz

application/x-compressed

tif

image/tiff

tiff

image/tiff

tr

application/x-troff

trm

application/x-msterminal

tsv

text/tab-separated-values

txt

text/plain

uls

text/iuls

ustar

application/x-ustar

vcf

text/x-vcard

vrml

x-world/x-vrml

wav

audio/x-wav

wcm

application/vnd.ms-works

wdb

application/vnd.ms-works

wks

application/vnd.ms-works

wmf

application/x-msmetafile

wps

application/vnd.ms-works

wri

application/x-mswrite

wrl

x-world/x-vrml

wrz

x-world/x-vrml

xaf

x-world/x-vrml

xbm

image/x-xbitmap

xla

application/vnd.ms-excel

xlc

application/vnd.ms-excel

xlm

application/vnd.ms-excel

xls

application/vnd.ms-excel

xlt

application/vnd.ms-excel

xlw

application/vnd.ms-excel

xof

x-world/x-vrml

xpm

image/x-xpixmap

xwd

image/x-xwindowdump

z

application/x-compress

zip

application/zip

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建一个文件上传表单
    • 创建上传脚本
      • 上传限制
        • 保存被上传的文件
          • MIME 类型
            • 按照内容类型排列的 Mime 类型列表
            • 按照文件扩展名排列的 Mime 类型列表
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档