layui图片上传代码

这是一个使用layui框架实现图片上传的示例代码。通过Controller处理文件上传请求,利用UploadUtil工具类将文件保存到指定路径,并返回上传结果。前端页面使用layui的上传组件,展示上传的图片并提供上传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

package com.ncwu.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.ncwu.util.UploadUtil;

@Controller
public class Fileupload {
//上传图片
@RequestMapping(value ="/upload",method=RequestMethod.POST)
public @ResponseBody Map<String, Object> image(@RequestBody MultipartFile file,HttpServletRequest request){

Map<String, Object> map = new HashMap<String, Object>();
try {
String name = file.getOriginalFilename();//上传文件的真实名称
String suffixName = name.substring(name.lastIndexOf(".")+1);//获取后缀名
//图片的存储位置
String path = request.getSession().getServletContext().getRealPath("\\upload\\"+suffixName+"\\");
String image = UploadUtil.uploadFile(file, path);

map.put("code", 0);
map.put("message", "上传成功");
map.put("data", image);
} catch (Exception e) {
map.put("code", 1);
e.printStackTrace();
}
System.out.println(map);
return map;
}

}

 

package com.ncwu.util;


import java.io.File;
import java.io.IOException;
import java.util.UUID;


import org.springframework.web.multipart.MultipartFile;


public class UploadUtil {


public static String uploadFile(MultipartFile file,String path) throws IOException {
String name = file.getOriginalFilename();//上传文件的真实名称
String suffixName = name.substring(name.lastIndexOf("."));//获取后缀名
// String hash = Integer.toHexString(new Random().nextInt());//自定义随机数(字母加数字)
String hash = UUID.randomUUID().toString();
String fileName = hash + suffixName;
File tempFile = new File(path, fileName);
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
if (tempFile.exists()) {
tempFile.delete();
}
tempFile.createNewFile();
file.transferTo(tempFile);
return tempFile.getName();
}

}

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="layui/css/layui.css"  media="all">
  <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
                   
<div class="layui-upload">
  <button type="button" class="layui-btn" id="test1">上传图片</button>
  <div class="layui-upload-list">
    <img class="layui-upload-img" id="demo1" height="300px" width="180px">
    <p id="demoText"></p>
  </div>
</div>   
         
<script src="layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui.use('upload', function(){
  var $ = layui.jquery
  ,upload = layui.upload;
  
  //普通图片上传
  var uploadInst = upload.render({
    elem: '#test1'
    ,method: 'POST'
    ,url: '/jzfw/upload/'
    ,before: function(obj){
      //预读本地文件示例,不支持ie8
      obj.preview(function(index, file, result){
        $('#demo1').attr('src', result); //图片链接(base64)
      });
    }
    ,done: function(res){
      //如果上传失败
      if(res.code > 0){
        return layer.msg('上传失败');
      }
      //上传成功
    }
    ,error: function(){
      //演示失败状态,并实现重传
      var demoText = $('#demoText');
      demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
      demoText.find('.demo-reload').on('click', function(){
        uploadInst.upload();
      });
    }
  });  
});
</script>


</body>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值