图片上传的两种方式

图片上传是开发中常常用到的,上传图片一般分为两种,一种用form表单,另一种是ajax,下面介绍一下这两种具体用法。
  • ajax上传图片
    页面无刷新,带来的体验更好。
前端代码
 <form class="" enctype="multipart/form-data">
    <div class="mui-input-row">
       <input id="file" name="file" accept="image/*" onblur="up()">
    div>
 form>


<script type="text/javascript">
    function up() {
        var file = document.getElementById("file");
        var form = new FormData();
        form.append("fileImg",file.files[0]);
        $.ajax({
            type: "post",
            url: "save_image",
            data: form,
            contentType: false, // 注意这里应设为false
            processData: false,    //false
            cache: false,    //缓存
            success: function(data){
                console.log(data);
            }
        })
    }

script>
php代码
public function save_image(Request $request)
{
    if (!empty($_FILES['fileImg'])){
       $name = $_FILES['fileImg']['name'];
    //防止重复不能上传
    $name = uniqid().$name;
       move_uploaded_file($_FILES['fileImg']['tmp_name'],'i/new/'.$name);
    }else{
        //
    }
}
  • form表单上传图片
前端代码
//注意 enctype="multipart/form-data"一定要写,不然获取不到数据。
"handle.php" name="form" method="post" enctype="multipart/form-data"> type="file" name="file" /> type="submit" name="submit" value="上传" />
php代码
$file = $_FILES['file'];//得到传输的数据
//得到文件名称
$name = $file['name'];
$type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件类型,并且都转化成小写
$allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型
//判断文件类型是否被允许上传
if(!in_array($type, $allow_type)){
  //如果不被允许,则直接停止程序运行
  return ;
}
//判断是否是通过HTTP POST上传的
if(!is_uploaded_file($file['tmp_name'])){
  //如果不是通过HTTP POST上传的
  return ;
}
$upload_path = "/image/i/"; //上传文件的存放路径
//开始移动文件到相应的文件夹
if(move_uploaded_file($file['tmp_name'],$upload_path.$file['name'])){
  echo "Successfully!";
}else{
  echo "Failed!";
}

当上传图片名中带有中文的时候会显示上传失败,可以把文件名转换一下:

 $imgname = $_FILES['file']['name'];
        $tmp = $_FILES['file']['tmp_name'];
        $filepath = 'statics/new_web/images/';

        if(move_uploaded_file ($tmp,$filepath.iconv("UTF-8","gbk",$imgname))){
            $data['indexs_img'] = '/'.$filepath.$imgname;
        }

你可能感兴趣的:(HTML,PHP)