完成文件上传

lihaobo
luoyijiucheng 6 years ago
parent e211235841
commit 0e3d393da2

@ -0,0 +1,78 @@
package com.yeqifu.sys.common;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @Author: -
* @Date: 2019/12/15 23:44
*/
public class AppFileUtils {
//文件上传的保存路径
/**
*
*/
public static String UPLOAD_PATH="E:/upload/";
static {
//读取配置文件的存储地址
InputStream stream = AppFileUtils.class.getClassLoader().getResourceAsStream("file.properties");
Properties properties=new Properties();
try {
properties.load(stream);
} catch (IOException e) {
e.printStackTrace();
}
String property = properties.getProperty("filepath");
if(null!=property) {
UPLOAD_PATH=property;
}
}
/**
*
* @param oldName
* @return
*/
public static String createNewFileName(String oldName) {
String stuff=oldName.substring(oldName.lastIndexOf("."), oldName.length());
return IdUtil.simpleUUID().toUpperCase()+stuff;
}
/**
*
* @param path
* @return
*/
public static ResponseEntity<Object> createResponseEntity(String path) {
//1,构造文件对象
File file=new File(UPLOAD_PATH, path);
if(file.exists()) {
//将下载的文件封装byte[]
byte[] bytes=null;
try {
bytes = FileUtil.readBytes(file);
} catch (Exception e) {
e.printStackTrace();
}
//创建封装响应头信息的对象
HttpHeaders header=new HttpHeaders();
//封装响应内容类型(APPLICATION_OCTET_STREAM 响应的内容不限定)
header.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//创建ResponseEntity对象
ResponseEntity<Object> entity= new ResponseEntity<Object>(bytes, header, HttpStatus.CREATED);
return entity;
}
return null;
}
}

@ -0,0 +1,64 @@
package com.yeqifu.sys.controller;
import cn.hutool.core.date.DateUtil;
import com.yeqifu.sys.common.AppFileUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: -
* @Date: 2019/12/15 23:46
*/
@RestController
@RequestMapping("file")
public class FileController {
/**
*
*/
@RequestMapping("uploadFile")
public Map<String,Object> uploadFile(MultipartFile mf) {
//1.得到文件名
String oldName = mf.getOriginalFilename();
//2.根据文件名生成新的文件名
String newName=AppFileUtils.createNewFileName(oldName);
//3.得到当前日期的字符串
String dirName= DateUtil.format(new Date(), "yyyy-MM-dd");
//4.构造文件夹
File dirFile=new File(AppFileUtils.UPLOAD_PATH,dirName);
//5.判断当前文件夹是否存在
if(!dirFile.exists()) {
//创建文件夹
dirFile.mkdirs();
}
//6.构造文件对象
File file=new File(dirFile, newName);
//7,把mf里面的图片信息写入file
try {
mf.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
Map<String,Object> map=new HashMap<String, Object>();
map.put("path",dirFile+"/"+newName);
return map;
}
/**
*
*/
@RequestMapping("showImageByPath")
public ResponseEntity<Object> showImageByPath(String path){
return AppFileUtils.createResponseEntity(path);
}
}

@ -1 +1,2 @@
multipart.maxFileSize=10Mb
multipart.maxRequestSize=50Mb

@ -0,0 +1 @@
filepath=E:/upload/

@ -16,6 +16,28 @@
<link rel="stylesheet" th:href="@{/resources/css/public.css}" media="all"/>
<link rel="stylesheet" th:href="@{/resources/layui_ext/dtree/dtree.css}" media="all"/>
<link rel="stylesheet" th:href="@{/resources/layui_ext/dtree/font/dtreefont.css}" media="all"/>
<style>
input#search_provideridTree_select_input_id {
border-radius: 10px;
height: 30px;
margin-top: 4px;
}
input#provideridTree_select_input_id {
border-radius: 10px;
height: 30px;
margin-top: 4px;
}
input#leaderprovideridTree_select_input_id {
border-radius: 10px;
height: 30px;
margin-top: 4px;
}
input.layui-input.layui-unselect {
border-radius: 10px;
height: 30px;
margin-top: 4px;
}
</style>
</head>
<body>
<!---->
@ -99,83 +121,93 @@
<!---->
<div id="addOrUpdateDiv" style="display: none;padding: 10px;padding-right: 5%">
<form action="" method="post" class="layui-form" id="dataFrm" lay-filter="dataFrm">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="hidden" name="id">
<input type="text" name="goodsname" lay-verify="required" autocomplete="off"
class="layui-input input-radius" placeholder="请输入商品名称">
<div class="layui-col-md12 layui-col-xs12">
<div class="layui-row layui-col-space10">
<div class="layui-col-md9 layui-col-xs7">
<div class="layui-form-item magt3">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<select name="providerid" id="providerid">
<option value="0"></option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="hidden" name="id">
<input type="text" class="layui-input input-radius" name="goodsname" lay-verify="required" placeholder="请输入商品名称">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" class="layui-input input-radius" name="description" lay-verify="required" placeholder="请输入商品描述">
</div>
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" name="address" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入商品地址">
<div class="layui-col-md3 layui-col-xs5">
<div class="layui-upload-list thumbBox mag0 magt3">
<input type="hidden" name="goodsimg" value="/images/noDefaultImage.jpg">
<img class="layui-upload-img thumbImg" src="/file/showImageByPath?path=images/noDefaultImage.jpg">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" name="telephone" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入商品电话">
<div class="layui-form-item magb0">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="produceplace" lay-verify="" placeholder="请输入商品产地">
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" name="zip" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入邮编">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="goodspackage" lay-verify="" placeholder="请输入商品包装">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" name="connectionpersion" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入联系人姓名">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="size" lay-verify="" placeholder="请输入商品规格">
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" name="phone" lay-verify="required|number" autocomplete="off" class="layui-input input-radius" placeholder="请输入联系人电话">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="productcode" lay-verify="" placeholder="请输入商品生产批号">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" id="bank" name="bank" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入开户银行">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="promitcode" lay-verify="" placeholder="请输入商品批准文号">
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" id="account" name="account" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入开户银行">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="price" lay-verify="" placeholder="请输入商品销售价格">
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">email</label>
<div class="layui-input-block">
<input type="text" id="email" name="email" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入email">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="number" lay-verify="" placeholder="请输入商品库存量">
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="text" id="fax" name="fax" lay-verify="required" autocomplete="off" class="layui-input input-radius" placeholder="请输入传真">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="text" class="layui-input input-radius" name="dangernum" lay-verify="" placeholder="请输入商品预警值">
</div>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="radio" name="available" value="1" title="可用" checked="">
<input type="radio" name="available" value="0" title="不可用">
<div class="layui-inline">
<label class="layui-form-label"></label>
<div class="layui-input-inline">
<input type="radio" name="available" value="1" title="可用" checked="">
<input type="radio" name="available" value="0" title="不可用" >
</div>
</div>
</div>
</div>
@ -200,11 +232,12 @@
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table'], function () {
layui.use(['jquery', 'form', 'layer', 'table','upload'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var upload = layui.upload;
//初始化表格 加载数据
tableIns = table.render({
@ -227,7 +260,9 @@
{field: 'price', title: '', align: 'center',width:'90'},
{field: 'number', title: '', align: 'center',width:'90'},
{field: 'dangernum', title: '', align: 'center',width:'100'},
{field: 'goodsimg', title: '', align: 'center',width:'150'},
{field: 'goodsimg', title: '', align: 'center',width:'150', templet:function(d){
return '<img width=40 height=40 src=/file/showImageByPath?path='+d.goodsimg+ ' />';
}},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
@ -304,6 +339,20 @@
};
});
//文件上传
upload.render({
elem: '.thumbBox',
url: '/file/uploadFile',
acceptMime:'image/*',
field:'mf',
method : "post",
done: function(res, index, upload){
var path=res.path;
$('.thumbImg').attr('src','/file/showImageByPath?path='+path);
$('.thumbBox').css("background","#fff");
}
});
var mainIndex;
var url;
@ -317,6 +366,16 @@
success:function () {
$("#dataFrm")[0].reset();
url="/goods/addGoods";
$.get("/provider/loadAllProviderForSelect",function(res){
var data=res.data;
var dom=$("#providerid");
var html='<option value="0"></option>'
$.each(data,function(index,item){
html+='<option value="'+item.id+'">'+item.providername+'</option>'
});
dom.html(html);
form.render("select");
});
}
});
}
@ -349,7 +408,6 @@
return false;
});
//删除
function deleteGoods(data) {
layer.confirm('' + data.goodsname + '', {icon: 3, title: ''}, function (index) {
@ -364,7 +422,6 @@
}
});

Loading…
Cancel
Save