找不到指定路径问题

找不到指定路径问题

package com.imooc.util;


import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;


import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

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

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


public class UploadUtils {

public static Map<String, Object> UploadFile(String uploadDirectory, HttpServletRequest request)

throws ServletException, IOException {

Map<String, Object> map = new HashMap<String, Object>();

try {

// 创建一个磁盘文件工厂对象

DiskFileItemFactory factory = new DiskFileItemFactory();

// 创建一个核心解析类

ServletFileUpload upload = new ServletFileUpload(factory);

// 解析request请求,返回的是list集合,list集合中存放的是FileItem对象

List<FileItem> list= upload.parseRequest(request);

String url=null ;

// 遍历集合,将每个表单项存储到Map集合

for (FileItem fileItem : list) {

if (fileItem.isFormField()) {

String name=fileItem.getFieldName();

String value=fileItem.getString("utf-8");

System.out.println(name+"  "+value);

map.put(name, value);

} else {

String fileName = fileItem.getName();

System.out.println(fileName);

// 获取文件的随机名

String uuidFileName = UuidUtils.getUUIDFileName(fileName);

// 获取文件上传的数据

InputStream is = fileItem.getInputStream();

// 将输入流对接到输出流

url = uploadDirectory + "\\" + uuidFileName;

OutputStream os = new FileOutputStream(url);

int len = 0;

byte[] bytes = new byte[1024];

while ((len = is.read(bytes)) != -1) {

os.write(bytes, 0, len);

}

is.close();

os.close();

// 将文件地址保存到集合

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return map;

}


}


package com.imooc.servlet;


import java.io.IOException;

import java.util.Map;


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 com.imooc.model.FoodDaoImpl;

import com.imooc.util.UploadUtils;


/**

 * 添加菜品信息的Servlet 

 */

@WebServlet("/FoodAddServlet")

public class FoodAddServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//将文件上传路径导入

Map<String,Object> map=UploadUtils.UploadFile("/upload", request);

FoodDaoImpl fdi=new FoodDaoImpl();

fdi.addFood(map);

request.getSession().setAttribute("list", fdi.getFoodByName(request.getParameter("foodName")));

response.sendRedirect(request.getContextPath()+"/showFoodList.jsp");

}


protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}


}



正在回答 回答被采纳积分+1

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

2回答
好帮手慕珊 2018-04-09 19:12:19

看错误提示FoodAddServlet就报错了,你可以去项目的目录下看看是否有png图片。另外,你是在eclipse中写的代码吧,看一下WebContent目录下是否创建了upload文件夹。

还有,我在UploadUtils这个类的方法中else语句后面,并没有看到调用map的put方法,把key值为"foodImage"的图片地址存储到map中,这个后面展示时会出现错误。

如果还有问题,把所有代码贴全,我们整体运行看看效果。

祝学习愉快!

  • 提问者 心予明月 #1
    好的!万分感谢老师!
    2018-04-09 19:13:26
好帮手慕珊 2018-04-09 18:27:42

你好!你是重定向到showFoodList.jsp出现的找不到指定路径的错误吗,建议贴一下错误截图,再贴一下showFoodList.jsp的代码,这样可以更好的定位问题。

祝学习愉快!


  • 提问者 心予明月 #1
    错误信息是 Type Exception Report Message \upload\e1340d5567b243dfb72a354d0604a825.png (系统找不到指定的路径。) Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception java.io.FileNotFoundException: \upload\e1340d5567b243dfb72a354d0604a825.png (系统找不到指定的路径。) java.base/java.io.FileOutputStream.open0(Native Method) java.base/java.io.FileOutputStream.open(FileOutputStream.java:276) java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:220) java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:109) com.imooc.util.UploadUtils.UploadFile(UploadUtils.java:48) com.imooc.servlet.FoodAddServlet.doGet(FoodAddServlet.java:24) com.imooc.servlet.FoodAddServlet.doPost(FoodAddServlet.java:33) javax.servlet.http.HttpServlet.service(HttpServlet.java:661) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Note The full stack trace of the root cause is available in the server logs.
    2018-04-09 18:30:21
  • 提问者 心予明月 #2
    <body> <center> <h1>菜品查询</h1> <table border="1px" cellspacing="0px" cellpadding="0px" width="800px"> <thead> <tr> <th>菜品ID</th> <th>菜名</th> <th>口味</th> <th>菜品图片</th> <th>价格</th> <th>菜品描述</th> </tr> </thead> <tbody> <% List<Map<String,Object>> list=null; if(request.getSession().getAttribute("list")!=null){ list=(List<Map<String,Object>>)request.getSession().getAttribute("list"); for(Map<String,Object> map:list){ String foodImage=(String)map.get("foodImage"); //获取绝对路径最后一个\的位置 int idx=user.getPath().lastIndexOf("\\"); //获得文件上传的唯一文件名 String fileName=foodImage.substring(idx+1); %> <tr> <td><%=map.get("id")%></td> <td><%=map.get("foodName") %></td> <td><%=map.get("taste") %></td> <td><img src="/FoodProj/upload/<%=fileName %>"/></td> <td><%=map.get("price") %></td> <td><%=map.get("description") %></td> </tr> <% } } %> </tbody> </table> </center> </body> 您说是不是这句话有问题!String foodImage=(String)map.get("foodImage");
    2018-04-09 18:33:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

Java Web基础入门2018版
  • 参与学习       716    人
  • 提交作业       185    份
  • 解答问题       1363    个

会Java?懂前端基础?想学后台开发?那么,赶快来学习《Java Web入门》路径吧。本路径主要介绍Java Web的基础知识,并配有大量案例,定会让你收获多多!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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