PHP实现图片上传程序(完整版)
Nginx的mime type
Nginx 会凭证mime type界说的对应关系来告诉浏览器若那边理服务器传给浏览器的这个文件,是打开照样下载;若是Web程序没设置,
Nginx也没对应文件的扩展名,就用Nginx 里默认的 default_type界说的处置方式。
php上传文件 $_FILES['']['type']的值
先来看一个函数:
好比Nginx默认的设置中default_type application/octet-stream; 这个就是默以为下载,浏览器接见到未界说的扩展名的时刻,就默以为下载
该文件;若是将这个设置改成default_type text/html;那就是告诉浏览器默认的打开方式是把所有未设置的扩展名当HTML文件打开
,虽然可能这样设置会许多打不开。
mime type 和文件扩展名的对应关系一样平常放在 mime.types这个文件里,然后用 include mime.types; 来加载
mime.types文件里是用types指令来界说的,下面是一个完整的界说:
types { # Audio audio/midi mid midi kar; audio/mp4 aac f4a f4b m4a; audio/mpeg mp3; audio/ogg oga ogg opus; audio/x-realaudio ra; audio/x-wav wav; # Images image/bmp bmp; image/gif gif; image/jpeg jpeg jpg; image/png png; image/svg+xml svg svgz; image/tiff tif tiff; image/vnd.wap.wbmp wbmp; image/webp webp; image/x-icon ico cur; image/x-jng jng; # JavaScript application/javascript js; application/json json; # Manifest files application/x-web-app-manifest+json webapp; text/cache-manifest manifest appcache; # Microsoft Office application/msword doc; application/vnd.ms-excel xls; application/vnd.ms-powerpoint ppt; application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; # Video video/3gpp 3gpp 3gp; video/mp4 mp4 m4v f4v f4p; video/mpeg mpeg mpg; video/ogg ogv; video/quicktime mov; video/webm webm; video/x-flv flv; video/x-mng mng; video/x-ms-asf asx asf; video/x-ms-wmv wmv; video/x-msvideo avi; # Web feeds application/xml atom rdf rss xml; # Web fonts application/font-woff woff; application/font-woff2 woff2; application/vnd.ms-fontobject eot; application/x-font-ttf ttc ttf; font/opentype otf; # Other application/java-archive jar war ear; application/mac-binhex40 hqx; application/pdf pdf; application/postscript ps eps ai; application/rtf rtf; application/vnd.wap.wmlc wmlc; application/xhtml+xml xhtml; application/vnd.google-earth.kml+xml kml; application/vnd.google-earth.kmz kmz; application/x-7z-compressed 7z; application/x-chrome-extension crx; application/x-opera-extension oex; application/x-xpinstall xpi; application/x-cocoa cco; application/x-java-archive-diff jardiff; application/x-java-jnlp-file jnlp; application/x-makeself run; application/x-perl pl pm; application/x-pilot prc pdb; application/x-rar-compressed rar; application/x-redhat-package-manager rpm; application/x-sea sea; application/x-shockwave-flash swf; application/x-stuffit sit; application/x-tcl tcl tk; application/x-x509-ca-cert der pem crt; application/x-bittorrent torrent; application/zip zip; application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; application/octet-stream iso img; application/octet-stream msi msp msm; application/octet-stream safariextz; text/css css; text/html html htm shtml; text/mathml mml; text/plain txt; text/vnd.sun.j2me.app-descriptor jad; text/vnd.wap.wml wml; text/vtt vtt; text/x-component htc; text/x-vcard vcf; } |
一样平常在Nginx的设置文件nginx.conf内里的http{}字段中设置即可,注重mime.types是在你的nginx的安装目录下,若是目录不是下面的,那你要自己手工修改:
# Define the MIME types for files. include /etc/nginx/mime.types; default_type application/octet-stream; # Update charset_types due to updated mime.types charset_types text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml text/css application/javascript application/json; |
input只允许上传图片类型文件
accept="image/*" 解决变慢的问题 input[file]标签的accept属性可用于指定上传文件的 MIME类型 。 例如,想要实现默认上传图片文件的代码,代码可如下: