fastdfs java 基於springMVC JSP 上傳 下載 案例


第一步  jsp頁面

<div class="col-xs-12" id="insertImgNewsNav" style="margin-bottom: 10px; padding: 0px;margin-left: -30px;display: none;">
<label class="col-xs-2 control-label" style="padding-right: 7px; padding-left: 0px;width: 173px;">新聞插圖<font color="red">*</font></label>
<div class="col-xs-4" style="padding-left: 8px;">
<input type="file" class="form-control" style="width: 240px;" maxlength="40"
id="imgFile" name="imgFile"
accept="image/gif,image/jpeg,image/png,image/bmp,image/x-png" placeholder="請輸入新聞鏈接 " onchange="upldImg()" value="" />
<input type="hidden" name="imgsrc" id="imgsrc" value=""/>
</div>
<label class="warning col-xs-6">請上傳4:3(400px*331px)等比例的圖片以達到最好效果</label>

</div>

 

第二步 js方法

 

function upldImg() {
var imgF= document.getElementById("imgFile").files;
var fileName= imgF[0].name;
var fileSize= imgF[0].size;
var fileType=imgF[0].type;
if(fileSize>10485760){
var imFile = $("#imgFile")
imFile.after(imFile.clone().val(""));
imFile.remove();
jz.util.addMsg("info", "文件過大,請選擇10MB以下的圖片!");
return;
}
var filetype=fileName.substr(fileName.lastIndexOf(".")+1).toLowerCase();
var filterType="jpg,gif,bmp,png";//定義允許上傳的文件后綴
if(filterType.indexOf(filetype)==-1){
var imFile = $("#imgFile")
imFile.after(imFile.clone().val(""));
imFile.remove();
jz.util.addMsg("info", "文件格式不正確,請選擇jpg,gif,bmp,png類型的圖片!");
return;
}
var file = imgF[0];
var reader = new FileReader();

//onload是異步操作
$("#preNewsImg").css("display","block");
reader.onload = function(e){
show.innerHTML = '<img width="400px" height="331px" src="'+e.target.result+'" alt="img">';
}
reader.readAsDataURL(file);
}

 

第三部 controller方法(TbNews 是新聞實體類)

/**
*
* Description:開始編輯新聞
* @author liufei
* @param request
* @param attr
* @return
* 2016-12-8
*/
@RequestMapping(value = "/updateEditNews")
public ModelAndView updateNewsDetail(HttpServletRequest request, RedirectAttributes attr,HttpServletResponse response,
@RequestParam("imgFile") CommonsMultipartFile attach) throws IllegalStateException, IOException {
ModelAndView mav = new ModelAndView();
TbUser currentUser = (TbUser) request.getSession().getAttribute(Constant.USER_INFO);
String newsId = request.getParameter("newsId");//標題
String newsTitle = request.getParameter("newsTitle");//標題
String permView = request.getParameter("permView");//可見
String proImp = request.getParameter("proimp");//發布模塊 公告 新聞
String newsSource = request.getParameter("newsSource");//來源
String newsAuthor = request.getParameter("newsAuthor");//作者
String link = request.getParameter("link");//新聞鏈接 可選
String newsContent = request.getParameter("newsContent");//新聞內容
String newsBodyHeight = request.getParameter("newsBodyHeight");//新聞編輯的高度
String newsSummary= request.getParameter("newsSummary");//摘要
String newsImgSrc=request.getParameter("newsImgSrc");//新聞圖片地址


TbNews news= new TbNews();
//插入導圖
InsertNewsNavImg(request, response, attach, news,newsImgSrc);
news.setId(newsId);
news.setTitle(newsTitle);
news.setContent(newsContent);
news.setAuthor(newsAuthor);
if (!StringUtils.isNullOrBlank(link)) {
news.setUrl(link);
}
if (!StringUtils.isNullOrBlank(newsBodyHeight)) {
Map<String,String> map = new HashMap<String, String>();
map.put("newsBodyHeight", newsBodyHeight);
news.setJsondata(MethodUtil.mapToJson(map));
}//新聞高度 展示用
news.setSource(newsSource);
news.setViewtype(Integer.parseInt(permView));
news.setType1(Integer.parseInt(proImp));
news.setOrderno(1);//排序
news.setStatus(Constant.NEWS_STATUS_PREPUBLISH);//新聞待上線
news.setFlag(Constant.NEWSVALIDFLAGTRUE);//新聞有效
news.setCreateBy(currentUser.getAccount());
news.setUpdateBy(currentUser.getAccount());
news.setUpdateTime(new Date());//新聞更新時間
news.setLastUpdateTime(new Date());//新聞最后更新時間
news.setSummary(newsSummary);
newsDetailsService.editNewsDetailBegin(news);
mav.setViewName("redirect:/lgip/all/news/newsPreservation");
return mav;
}

第四步 上傳方法

/**
* 新聞插入導圖
* @param request
* @param response
* @param attach
* @param news
* @throws IOException
*/
private void InsertNewsNavImg(HttpServletRequest request, HttpServletResponse response, CommonsMultipartFile attach,
TbNews news,String newsImgSrc) throws IOException {
response.setCharacterEncoding("GBK");
long startTime=System.currentTimeMillis();
Date date= new Date();
String uuid5 = UUIDGenerator.getUUID().substring(0,5);
String dayStr=""+DateUtils.getYear(date)+DateUtils.getMonth(date)+DateUtils.getDay(date);
//String location="E:/upload/"+dayStr+"/";//win
String location="/home/lgip_fastdfs/static/newsUpload/"+dayStr+"/";//linux
//將當前上下文初始化給 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//檢查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request)) {
//將request變成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//獲取multiRequest 中所有的文件名
@SuppressWarnings("rawtypes")
Iterator iter=multiRequest.getFileNames();
while(iter.hasNext()) {
//一次遍歷所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
File dir =new File(location);
if(file.getSize()<=10485760 && file.getSize()>0){
if(file!=null) {
if (!dir.exists()) {
dir.mkdirs();// 目錄不存在的情況下,會拋出異常
}
String path=location+startTime+uuid5+file.getOriginalFilename();
String urlPath="/newsUpload/"+dayStr+"/"+startTime+uuid5+file.getOriginalFilename();
//上傳
logger.debug(path);
file.transferTo(new File(path));
news.setImg(urlPath);
}
}else if(attach.getSize() > 10485760){
news.setImg(newsImgSrc);
logger.debug("文件上傳過大!");
}else{
news.setImg(newsImgSrc);
logger.debug("沒有上傳文件!");
}

}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM