【javaweb】文件的上传和下载需要注意的路径问题

对于某个project来说,配置tomcat服务器的输出路径被我忽视了。最近在完成javaweb文件上传下载的学习时,发现上传的文件不知道下载到哪里去了(或许我该去补补maven基础...),然后才发现自己是个傻子...

首先,需要知道项目的输出路径可以更改:默认的就是如下图的\(整个)工程名\out文件夹下

然后,进一步的这个单独的module的输出路径(output directory)默认在各个artifact(对应不同的module)下:

或者,也可以直接看/out文件夹:

 注意:现在是没有上传任何文件的,这里提供下载的servlet:

package com.demo;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

@WebServlet(name="FileUploadServlet",urlPatterns={"/fileUpload"})
@MultipartConfig(location="D:\\",fileSizeThreshold=1024)
public class FileUploadServlet extends HttpServlet {
    // 返回上传来的文件名
    private String getFilename(Part part){
        String fname = null;
        // 返回上传的文件部分的content-disposition请求头的值
        String header = part.getHeader("content-disposition");
        System.out.println(header);
        // 返回不带路径的文件名
        fname = header.substring(header.lastIndexOf("=")+2,
                header.length()-1);
        return fname;
    }

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
            throws ServletException, IOException {
        // 返回Web应用程序文档根目录
        String path = this.getServletContext().getRealPath("/");
        String mnumber = request.getParameter("mnumber");
        Part p = request.getPart("fileName");
        String message="";
        if(p.getSize() >1024*1024){    // 上传的文件不能超过1MB大小
            p.delete();
            message = "文件太大,不能上传!";
        }else{
            // 文件存储在文档根目录下member子目录中会员号子目录中
            path = path + "\\member\\" +mnumber;
            File f = new File(path);
            if( !f.exists()){  // 若目录不存在,则创建目录
                f.mkdirs();
            }
            String fname = getFilename(p);   // 得到文件名
            System.out.println(fname);
            p.write(path + "\\"+ fname);     // 将上传的文件写入磁盘
            message = "文件上传成功!";
        }
        request.setAttribute("message", message);
        RequestDispatcher rd = request.getRequestDispatcher("/fileUpload.jsp");
        rd.forward(request, response);
    }
}

然后,根据页面的需求:

 上传一个1.png

上传成功!会显示提示信息: 

 

 而且控制台输出上传文件的信息(getFileName方法中定义的):

此时,/out下已有目标文件夹和文件: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值