javaweb项目在2024版IDEA中的创建以及文件的上传

1.首先创建一个简单的java项目,之后载进行配置的添加

2.之后,点击untitle1,连续按下shift键两次,在搜索框中输入“添加”,英文是"add"

3.点击“添加框架支持”,选择Web应用程序,点击确定

4.添加外部库:双击src,点击库,点击左上角的加号,选择java,找到你所要使用的库,点击应用

5.点击工件,双击你刚刚选择的库,再点击应用


这样就创建好啦!

二、文件的上传:分别是两种形式,form表单形式的和ajax形式的
servlet包下的UploadServlet

package com.cyx.jsp.servlet;


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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.List;

@WebServlet("/upload")
public class UploadServlet extends HttpServlet {

    private static final String SAVE_DIR="D:\\桌面\\Documents\\Downloads\\Spring课件\\Spring课件\\代码\\xq-spring-project\\untitled\\out\\artifacts\\untitled_war_exploded\\upload";
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if(ServletFileUpload.isMultipartContent(req)){
            DiskFileItemFactory factory = new DiskFileItemFactory();//创建一个磁盘文件项
            factory.setDefaultCharset("UTF-8");//设置编码
            factory.setRepository(new File("java.io.tmpdir")); //设置临时文件存放位置
            factory.setSizeThreshold(1024*4096);//设置内存缓冲区大小
            ServletFileUpload upload = new ServletFileUpload(factory);//创建一个文件上传对象
            upload.setFileSizeMax(1024*1024*5);//设置单个文件大小
            upload.setSizeMax(50*1024*1024);//设置总文件大小
            upload.setHeaderEncoding("UTF-8");//设置编码
            try {
                List<FileItem> fileItems = upload.parseRequest(req);//解析请求
                for(FileItem fileItem:fileItems){
                    if(fileItem.isFormField()){//判断是否是普通的表单
                        System.out.println(fileItem.getFieldName()+"=>"+fileItem.getString());
                    }else{//走到这里说明上传的是文件
                        File dir=new File(SAVE_DIR);
                        if(!dir.exists())
                            dir.mkdirs();
                            //创建保存的文件
                            File saveFile=new File(dir,fileItem.getName());
                            InputStream is= fileItem.getInputStream();//获取上传文件的输入流
                            OutputStream os=new FileOutputStream(saveFile);
                            IOUtils.copy(is,os);//将输入流的信息拷贝至输出流中,这就是文件保存
                            IOUtils.closeQuietly(is);//关闭流
                            IOUtils.closeQuietly(os);//关闭流

                    }
                }
                resp.setCharacterEncoding("UTF-8");
                resp.setContentType("text/html;charset=utf-8");
                resp.getWriter().print("上传成功");
            } catch (FileUploadException e) {
                e.printStackTrace();
                resp.setCharacterEncoding("UTF-8");
                resp.setContentType("text/html;charset=utf-8");
                resp.getWriter().print("上传失败");
            }
        }else{
            throw new RuntimeException("请求头中未发现multipart/form-data");

        }
    }
}

index.jsp页面:

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2025/5/6
  Time: 11:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>文件上传和下载</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data" >
  <input type="text" name="name">
  <input type="file" name="uploadFile">
  <input type="submit" value="上传">
</form>

<%--ajax文件上传--%>
<input type="file" id="uploadFile">
<input type="button" value="上传" id="uploadBtn">
</body>

<script type="text/javascript " src="js/jquery-3.6.0.js"></script>
<script type="text/javascript">
  $(function () {
      $("#uploadBtn").click(function () {
           let formData=new FormData();//创建表单数据对象,用于模拟表单数据
           formData.append("uploadFile",$("#uploadFile")[0].files[0]);
           formData.append("name","张三");
           formData.append("sex","女");
           $.ajax({
               url:'upload',
               type:'post',
               data:formData,
               processData:false,//不处理发送的数据
               contentType:false,//不设置Content-Type请求头
               success:function (resp) {
                   alert(resp);
               },
             error:function (xhr) {

             }
           });
      })
  })
</script>



注意:存放的路径是要在out文件夹下的
结果:
显示上传成功并存放进来:

posted @ 2025-05-06 19:51  f-52Hertz  阅读(291)  评论(0)    收藏  举报