环境搭建

  • 目的:在工程下创建文件夹并接收上传的文件
  • UploadServlet
public class UploadServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {// 1.创建磁盘文件项工厂DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();// 2.创建一个核心的解析类ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);// 3.利用核心类解析Request,解析后会得到多个部分。返回一个List集合。List集合装的是每个部分的内容(FileItem文件项)List<FileItem> list = fileUpload.parseRequest(request);// 4.遍历List集合,会得到代表每个部分的文件项的对象。根据文件项判断是否是文件上传项for (FileItem fileItem : list) {// 判断这个文件项是否是普通项还是文件上传项。if (fileItem.isFormField()) {// 普通项:// 接收普通项的值:(接收值不能再使用request.getParameter())String name = fileItem.getFieldName();// 获得普通项的名称// 获得普通项的值String value = fileItem.getString("UTF-8");System.out.println(name + "  " + value);} else {// 文件上传项:// 获得文件上传项的文件的名称:String fileName = fileItem.getName();// 获得文件上传的文件的数据:InputStream is = fileItem.getInputStream();// 获得文件上传的路径:磁盘绝对路径。String realPath = getServletContext().getRealPath("/upload");// 创建一个输出流,写入到设置的路径中。OutputStream os = new FileOutputStream(realPath + "/" + fileName);// 两个流对接:int len = 0;byte[] b = new byte[1024];while ((len = is.read(b)) != -1) {os.write(b, 0, len);}is.close();os.close();}}} catch (Exception e) {e.printStackTrace();}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
  • upload.jsp
<h1>文件上传</h1>
<!-- 文件上传三要素* 表单需要是post提交* 表单中需要文件上传项,必须有name的属性和值* 表单的enctype属性必须是multipart/form-data   -->
<form action="${ pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">文件描述:<input type="text" name="info"><br>文件上传:<input type="file" name="upload"><br><input type="submit" value="上传">
</form>
  • 代码报错
java.io.FileNotFoundException: E:\IdeaProjects\web_test\out\artifacts\web06_war_exploded\upload\aa.txt (系统找不到指定的路径。)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputStream.open(FileOutputStream.java:270)at java.io.FileOutputStream.<init>(FileOutputStream.java:213)at java.io.FileOutputStream.<init>(FileOutputStream.java:101)at upload.UploadServlet.doPost(UploadServlet.java:48)at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
  • 问题

    1. 不会在项目文件夹里生成upload文件夹
    2. 而且生成的位置在out目录下
  • 解决方法1
    自己创建路径去接收

OutputStream os = new FileOutputStream("E:\\" + fileName);
  • 解决方法2
    自己添加一个创建文件夹的方法
String path="E:\\mydata\\upload\\";File file = new File(path+fileName);if (!file.getParentFile().exists()){file.getParentFile().mkdirs();}// 创建一个输出流,写入到设置的路径中。OutputStream os = new FileOutputStream(file);

文件上传:FileNotFoundException(系统找不到指定的路径)相关推荐

  1. 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

    记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...

  2. Java如何获取IP属地 ip2region failed to create searcher with x:java.io.FileNotFoundException:( 系统找不到指定的路径)

    目录 引言 获取ip地址 使用ServerHttpRequest获取ip完整地址: 获取ip地址的源代码 接口调用源代码 使用HttpServletRequest获取ip完整地址 获取ip地址的源代码 ...

  3. FileNotFoundException(系统找不到指定的路径)

    今天发现一个问题解决了我非常非常久!! 就是运行tomcat的时候,在访问资源的时候,会报  一个路径  +  系统找不到指定文件 但是你检查发现,这个文件确实就在这里面躺着啊!!!怎么会找不到呢?? ...

  4. java保存文件的时候提示系统找不到路径_java.io.FileNotFoundException (系统找不到指定的路径。)...

    发生这个问题的原因,主要是因为,您登录Windows(Win7.Vista.XP等)的用户名是中文名,或者您指定安装的路径里面包含中文等字符. 是的,虽然VirtualBox本身支持简体中文,但是对这 ...

  5. eclipse启动tomcat时,提示backup文件夹下,系统找不到指定的路径

    原因:tomcat安装后,打开tomcat安装目录,发现没有backup这个文件夹,eclipse第一次启动tomcat时,会在下面新建一个backup文件夹,但是出于安全方面考虑,系统默认不让用户新 ...

  6. 文件上传成功后找不到文件位置

    上传文件后找不到文件位置 在文件上传成功后找不到文件所在的位置是Tomcat部署问题,部署在war下在idea工作空间是找不到上传的文件的 @RequestMapping("/fileupl ...

  7. 关于C#winform程序运行无异常,在生成安装文件安装后提示水晶报表加载失败,系统找不到指定的路径的解决方法...

    关于C#winform程序运行无异常,在生成安装文件安装后提示"水晶报表加载失败,系统找不到指定的路径"的解决方法 娘了个腿的!搞了好几天,百度都被我搜烂了,连发布相关内容的作者名 ...

  8. Exception in thread “main“ java.io.FileNotFoundException: test\mybatis-config.xml (系统找不到指定的路径。)

    Exception in thread "main" java.io.FileNotFoundException: test\mybatis-config.xml (系统找不到指定 ...

  9. java.io.FileNotFoundException: .\xiangmu\src\main\webapp\upload....jpg (系统找不到指定的路径。)

    java.io.FileNotFoundException: .\xiangmu\src\main\webapp\upload-jpg (系统找不到指定的路径.) File file=new File ...

最新文章

  1. JSon数据查询---Jlinq
  2. c 语言 按位与或非运算符,C++中的按位与、按位与或|、按位异或^运算符详解
  3. 转 Android自动测试之monkeyrunner工具(二)
  4. python爬虫抓取51cto博客大牛的文章保存到MySQL数据库
  5. 计算机图形学E1——OpenGL 方中有圆,圆中有方,无穷尽焉
  6. php符号%3c%3e啥意思,[PHP防火墙]输入内容存在危险字符,安全起见,已被本站拦截...
  7. 从0到上线一个完整Java项目,需要具备哪些技能?
  8. 曾经以为20岁很遥远_曾经以为30岁很遥远,却发现18岁是很久之前的事了。
  9. BAT等大厂年薪30W+面试清单:JVM\MySQL\设计模式\分布式\微服务
  10. 使用python调整excel表格的行和列以及合并或拆分单元格
  11. 金山Wps珠海实习杂记(一)
  12. html链接怎么恢复,Word文档中目录的超链接取消后怎么样恢复?
  13. 嵌入式系统开发笔记39:重叠五角星
  14. #微信公众平台开发(一)
  15. nyoj 547- Interesting Punch-Bowl(优先队列模拟)
  16. 生成全局唯一ID的3个思路,来自一个资深架构师的总结
  17. linux不设置网关,关于设置网关的问题,刚使用linux不太明白啊...
  18. 计算机微结构的作用,微结构功能光学材料的几种典型应用
  19. java计算机毕业设计健康饮食推荐系统MyBatis+系统+LW文档+源码+调试部署
  20. js入门·动态的时钟,显示完整的一些方法,新年倒计时

热门文章

  1. 微软python视频教程字幕_11个最新国外python视频课程推荐(含中英文字幕,全网独家)...
  2. C++每隔一段时间处理一些操作
  3. rtx3080ti什么时候上市 rtx3080ti和RTX 3080参数对比哪个好
  4. 如何做自己的域名邮箱?
  5. INSERT INTO(实操十三)
  6. 阿里云高主频计算型实例规格族cm4实例CPU配置性能和使用场景
  7. 2018年8月16日多线程并发和队列
  8. 美国服务器的日常维护工作
  9. 转载:娱乐性故事片的剧本是怎样的
  10. nyan cat,全彩点阵_与Nyan Cat在Linux命令行中休息一下