php上传功能集后缀名判断和随机命名

form.php

<html>
<head>
    <meta http-equiv="content-type" content="text/html" charset="utf-8">
    <title>Upload Image</title>
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SEZE" value="2000000">
    <input type="file" name="file" value="view">
    <input type="submit" value="upload" name="B1">
</form>
</body>
</html>

upload.php

<?php
include("check.php"); // 引入自定义函数文件
$type = array("jpg", "gif", "bmp", "jpeg", "png");
// 判断上传文件类型
$fileext = strtolower(fileext($_FILES[‘file‘][‘name‘]));
$uploadfilename = random(8);
if(in_array($fileext, $type)){
    $filename = explode(".", $_FILES[‘file‘][‘name‘]);

        if(is_uploaded_file($_FILES[‘file‘][‘tmp_name‘])){
//        echo $_FILES[‘file‘][‘tmp_name‘];
        $flag = move_uploaded_file($_FILES[‘file‘][‘tmp_name‘], "/Library/WebServer/Documents/test/".$uploadfilename.".".$fileext);
        if($flag){
            echo "上传成功!";
        }else{
            echo "Error.";
        }
        echo "<a href=‘javascript:history.go(-1)‘>Back</a>";
    }
}

check.php

<?php
header("Content-type:text/html;charset=utf8");
// 获取文件后缀名函数
function fileext($filename){
    $sTemp = strrchr($filename, ".");
    return substr($sTemp, 1);
}
function fileext2($filename){
    $sTemp = explode(".", $filename);
    return $sTemp[count($sTemp)-1];

}
// 生成随机文件名函数
function random($length){
    $captchaSource = "0123456789abcdefghijklmnopqrstuvwxyz这是一个随机打印输出字符串的例子";

    $captchaResult = "2015"; // 随机数返回值
    $captchaSentry = ""; // 随机数中间变量
    for($i=0;$i<$length;$i++){
        $n = rand(0, 35); #strlen($captchaSource));
        if($n >= 36){
            $n = 36 + ceil(($n-36)/3) * 3;
            $captchaResult .= substr($captchaSource, $n, 3);
        }else{
            $captchaResult .= substr($captchaSource, $n, 1);
        }
    }
    return $captchaResult;
}
?>

将三个文件整合成一个:

<?php
// 获取文件后缀名函数
function fileext($filename){
    $sTemp = strrchr($filename, ".");
    return substr($sTemp, 1);
}
function fileext2($filename){
    $sTemp = explode(".", $filename);
    return $sTemp[count($sTemp)-1];

}
// 生成随机文件名函数
function random($length){
    $captchaSource = "0123456789abcdefghijklmnopqrstuvwxyz这是一个随机打印输出字符串的例子";

    $captchaResult = "2015"; // 随机数返回值
    $captchaSentry = ""; // 随机数中间变量
    for($i=0;$i<$length;$i++){
        $n = rand(0, 35); #strlen($captchaSource));
        if($n >= 36){
            $n = 36 + ceil(($n-36)/3) * 3;
            $captchaResult .= substr($captchaSource, $n, 3);
        }else{
            $captchaResult .= substr($captchaSource, $n, 1);
        }
    }
    return $captchaResult;
}

$type = array("jpg", "gif", "bmp", "jpeg", "png");
// 判断上传文件类型
$fileext = strtolower(fileext($_FILES[‘file‘][‘name‘]));
$uploadfilename = random(8);
if(in_array($fileext, $type)){
    $filename = explode(".", $_FILES[‘file‘][‘name‘]);

    if(is_uploaded_file($_FILES[‘file‘][‘tmp_name‘])){
//        echo $_FILES[‘file‘][‘tmp_name‘];
        $flag = move_uploaded_file($_FILES[‘file‘][‘tmp_name‘], "/Library/WebServer/Documents/test/".$uploadfilename.".".$fileext);
        if($flag){
            echo "上传成功!";
        }else{
            echo "Error.";
        }
        echo "<a href=‘javascript:history.go(-1)‘>Back</a>";
    }
}

?>

<html>
<head>
    <meta http-equiv="content-type" content="text/html" charset="utf-8">
    <title>Upload Image</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SEZE" value="2000000">
    <input type="file" name="file" value="view">
    <input type="submit" value="upload" name="B1">
</form>
</body>
</html>
时间: 2024-10-10 22:55:58

php上传功能集后缀名判断和随机命名的相关文章

文件上传功能实现(二)

①IE低版本的文件名称Bug解决     问题:使用fileItem.getName()这个方法的时候,可以拿到文件名称,一般浏览器拿到的格式:xx.png 但IE拿到的是D:/xx/xx/xx.png   我们的功能就实现不了     解决方案:使用导入的IO包中的  FilenameUtils 工具类中的getName()方法  可以拿到 xx.png 于是:咱们把拿到名称的代码进行修改即可 修改前(在IE低版本中有问题): String fileName =fileItem.getName

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?

今天群里有人聊图片上传,简单说下自己的经验 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那么如果我在传路径的时候,前面加了一个../呢,这样这种服务器端的限制就跳过了.(DJ音乐站基本上都有这个问题,以及用某编辑器的同志) 1.常用方法:这种就是根据后缀判断是否是图片文件,需要注意的是这种格式:文件:1.asp;.jpg  1.asp%01.jpg  目录: 1.jpg/1.asp 1.jpg/1.

layui图片上传之后后台如何修改图片的后缀名以及返回数据给前台

const pathLib = require('path');//引入node.js下的一个path模块的方法,主要处理文件的名字等工作,具体可看文档 const fs = require(''fs); var app = new express(); //前台图片上传访问路径 app.post('/upload',(req,res)=>{ if(Boolean(typeof req.files[0])){//判断访问该后台时是否有图片上传 var ext = pathLib.parse(re

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f

php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)

网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中却可能忽视了一些细节问题,那就是文件的类型(MIME).在表单将文件提交给php做处理之 前,浏览器会先解析识别一边是什么类型的文件,之后进入php处理环节,php又会去识别解析此文件的原始类型(并不是说你改成什么后缀就是什么文件). 在这个过程中会有一些浏览器兼容,更准确来说是文件类型解析标识不一

判断一个文件是否是指定后缀名的文件

package com.toogen.log4j; import java.io.File; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class FileTest { private static Log log = LogFactory.getLog(FileTest.class); /** * 测试 * @param args */ public s

PHP文件上传后缀名与文件类型对照表

ie 火狐 id 后缀名 php识别出的文件类型 0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 bmp image/bmp 4 psd application/octet-stream 5 ico image/x-icon 6 rar application/octet-stream 7 zip application/zip 8 7z application/octet-stream 9 exe application/octet-str

java根据文件流判断文件类型(后缀名)

import java.io.FileInputStream; public class FileType{ public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) {