图片上传后不能预览,图片损坏

图片上传后不能预览,图片损坏

package controller;


import java.io.File;

import java.io.IOException;

import java.util.List;

import java.util.UUID;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;


import entity.Painting;

import service.PaintingService;

import utils.PageModel;


/**

 * Servlet implementation class ManagementController

 */

@WebServlet("/management")

public class ManagementController extends HttpServlet {

private PaintingService paintingService=new PaintingService();

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public ManagementController() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

String method=request.getParameter("method");

if(method.equals("list")) {

this.list(request,response);

}else if(method.equals("show_create")) {

this.showCreatePage(request,response);

}else if(method.equals("create")) {

this.create(request,response);

}

}


@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String p=request.getParameter("p");

String r=request.getParameter("r");

if(p==null) {

p="1";

}

if(r==null) {

r="6";

}

PageModel pageModel=paintingService.pagination(Integer.parseInt(p), Integer.parseInt(r));

request.setAttribute("pageModel", pageModel);

request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request,response);

}

private void showCreatePage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.getRequestDispatcher("/WEB-INF/jsp/create.jsp").forward(request, response);

}

private void create(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//String pname=request.getParameter("pname");

//request.getRequestDispatcher("/WEB-INF/jsp/create.jsp").forward(request, response);

//1初始化FileUpload

/**

* FileItemFactory用于将前端表单的数据转换为一个FileItem对象

* ServletFileUpload则是为FileUpload组件提供一个Java web的Http请求解析

*/

FileItemFactory factory=new DiskFileItemFactory();

ServletFileUpload sf=new ServletFileUpload(factory);

//2遍历所有的FileItem

try {

List<FileItem>formData=sf.parseRequest(request);

Painting painting=new Painting();

for(FileItem fi:formData) {

if(fi.isFormField()) {

//System.out.println("普通输入项"+fi.getFieldName()+fi.getString());

switch(fi.getFieldName()) {

case "pname":

painting.setPname(fi.getString("utf-8"));

break;

case "category":

painting.setCategroy(Integer.parseInt(fi.getString("utf-8")));

break;

case "price":

painting.setPrice(Double.parseDouble(fi.getString("utf-8")));

break;

case "description":

painting.setDescription(fi.getString("utf-8"));

break;

default:

break;

}

}else {

System.out.println(fi.getFieldName());

//3文件保存到服务器目录

String path="C:\\Users\\user\\Desktop\\Java\\New_Eclipseworkspace\\mgallery\\WebContent\\upload";

System.out.println(path);

//String fileName="test.jpg";

String fileName=UUID.randomUUID().toString();

//fi.getName()得到原始文件名

String suffix=fi.getName().substring(fi.getName().lastIndexOf("."));

fi.write(new File(path,fileName+suffix));

painting.setPreview("/upload/"+fileName+suffix);

}

}

paintingService.create(painting);//新增功能

response.sendRedirect("/management?method=list");//返回列表页

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

package service;


import java.util.List;


import dao.PaintingDao;

import entity.Painting;

import utils.PageModel;


public class PaintingService {

private PaintingDao paintingDao=new PaintingDao();

public PageModel pagination(int page,int rows,String...category) {

if(rows==0) {

throw new RuntimeException("无效的rows参数");

}

if(category.length==0||category[0]==null) {

return paintingDao.pagination(page, rows);

}else {

return paintingDao.pagination(Integer.parseInt(category[0]), page, rows);

}

}

public void create(Painting painting) {

paintingDao.create(painting);

}

public static void main(String[] args) {

PaintingService paintingService=new PaintingService();

PageModel pageModel=paintingService.pagination(2, 6);

List<Painting> paintingList=pageModel.getPageData();

for(Painting painting:paintingList) {

System.out.println(painting.getPname());

}

}

}

package dao;


import java.util.ArrayList;

import java.util.List;


import entity.Painting;

import utils.PageModel;

import utils.XmlDataSource;



public class PaintingDao {

public PageModel pagination(int page,int rows){

List<Painting>list=XmlDataSource.getRawData();

PageModel pageModel=new PageModel(list,page,rows);

return pageModel;

}

public PageModel pagination(int category,int page,int rows) {

List<Painting> list=XmlDataSource.getRawData();

List<Painting> categoryList=new ArrayList();

for(Painting p:list) {

if(p.getCategroy()==category) {

categoryList.add(p);

}

}

PageModel pageModel=new PageModel(categoryList,page,rows);

return pageModel;

}

public void create(Painting painting) {

XmlDataSource.append(painting);

}

}

package utils;


import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.io.Writer;

import java.net.URLDecoder;

import java.util.ArrayList;

import java.util.List;


import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.SAXReader;


import entity.Painting;


/**

 * 数据源类,将XML文件解析为Java对象

 * @author user

 *

 */

public class XmlDataSource {

//通过static静态关键字保证数据全局唯一

private static List<Painting> data=new ArrayList();

private static String dataFile;

static {

//得到patinting.xml文件完整物理路径

dataFile=XmlDataSource.class.getResource("/painting.xml").getPath();

reload();

}

public static List<Painting> getRawData(){

return data;

}

private static void reload() {

URLDecoder decoder=new URLDecoder();

try {

dataFile=decoder.decode(dataFile,"UTF-8");

System.out.println(dataFile);

//利用Dom4j对XML进行解析

SAXReader reader=new SAXReader();

//1获取Document文档对象

Document doc=reader.read(dataFile);

//2Xpath得到XML节点集合

List<Node> nodes=doc.selectNodes("/root/painting");

data.clear();

for(Node node:nodes) {

Element ele=(Element)node;

String id=ele.attributeValue("id");

String pname=ele.elementText("pname");

Painting painting=new Painting();

painting.setId(Integer.parseInt(id));

painting.setPname(pname);

painting.setCategroy(Integer.parseInt(ele.elementText("category")));

painting.setPrice(Double.parseDouble(ele.elementText("price")));

painting.setPreview(ele.elementText("preview"));

painting.setDescription(ele.elementText("description"));

data.add(painting);

//System.out.println(id+":"+pname);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void append(Painting painting) {

//1读取XML文档得到Document对象

SAXReader reader=new SAXReader();

Writer writer=null;

try {

Document doc=reader.read(dataFile);

//2创建新的painting节点

Element root=doc.getRootElement();

Element p=root.addElement("painting");

//3创建painting结点的各个子节点

p.addAttribute("id",String.valueOf(data.size()+1));

p.addElement("pname").setText(painting.getPname());;

p.addElement("category").setText(painting.getCategroy().toString());

p.addElement("price").setText(painting.getPrice()+"");

p.addElement("preview").setText(painting.getPreview());

p.addElement("description").setText(painting.getDescription());

//4写入XML完成追加操作

writer=new OutputStreamWriter(new FileOutputStream(dataFile),"utf-8");

doc.write(writer);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

if(writer!=null) {

try {

writer.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

reload();//内存与文件的数据一致

}

}

public static void main(String[] args) {

//new XmlDataSource();

//List<Painting> ps=XmlDataSource.getRawData();

//System.out.println(ps);

Painting p=new Painting();

p.setPname("test");

p.setCategroy(1);

p.setPrice(3800);

p.setDescription("111");

p.setPreview("/upload/10.jpg");

XmlDataSource.append(p);

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,图片不能预览是因为同学将图片上传到了项目的upload文件夹下了。应该上传到Tomcat中部署项目的upload文件夹下。

参考代码如下:

http://img1.sycdn.imooc.com//climg/5eec6c1409e91d8509520112.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师