Java实现一个简单的文件上传案例示例代码

yizhihongxing

下面是详细的讲解“Java实现一个简单的文件上传案例示例代码”的完整攻略。

1. 确定文件上传方式

在Java中实现文件上传,有多种方法可以选择,比如使用Java Servlet,使用Spring MVC等。本攻略选择使用Java Servlet实现简单的文件上传。

2. 创建HTML表单

为了上传文件,需要创建一个HTML表单用于提交文件。表单的必要元素如下:

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <br />
    <input type="submit" value="Upload" />
</form>

其中,action属性指定了表单提交的路径,这里指定为“upload”,method属性指定了表单提交的方式,这里使用了POST方式。enctype属性指定了表单中包含二进制数据,这里的值固定为“multipart/form-data”。

3. 创建Servlet

接下来,需要在Java中编写一个Servlet以处理上传的文件。在Servlet中,需要完成以下几个步骤:

a. 获取上传的文件

Part filePart = request.getPart("file");
String fileName = getSubmittedFileName(filePart);
InputStream fileContent = filePart.getInputStream();

这里使用了Java Servlet 3.0中的Part接口来获取上传的文件。getPart方法需要传入文件域的名称,这里是“file”。getSubmittedFileName方法获取了上传文件的文件名。getInputStream方法获取了上传文件的输入流,以便读取文件内容。

b. 保存上传的文件

File file = new File(savePath + File.separator + fileName);
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fileContent.read(buffer)) != -1) {
    outputStream.write(buffer, 0, length);
}
outputStream.close();
fileContent.close();

在这里,首先需要创建一个File对象,指定文件保存路径和文件名。File.separator是一个平台无关的路径分隔符。然后创建一个输出流,将上传文件写入磁盘中。

c. 响应上传结果

response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.println("Upload success!");

最后需要向客户端响应上传结果。在这里,设置了响应的MIME类型为text/html,并将响应内容写入响应的输出流中。

4. 完整的Servlet代码示例

下面是完整的Servlet代码示例:

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

    private String savePath = "upload";

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Part filePart = request.getPart("file");
        String fileName = getSubmittedFileName(filePart);
        InputStream fileContent = filePart.getInputStream();

        File file = new File(savePath + File.separator + fileName);
        OutputStream outputStream = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = fileContent.read(buffer)) != -1) {
            outputStream.write(buffer, 0, length);
        }
        outputStream.close();
        fileContent.close();

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("Upload success!");
    }

    private String getSubmittedFileName(Part part) {
        for (String content : part.getHeader("content-disposition").split(";")) {
            if (content.trim().startsWith("filename")) {
                return content.substring(content.indexOf("=") + 2, content.length() - 1);
            }
        }
        return "";
    }
}

5. 示例说明

示例1:上传文件并保存到服务器

首先开启Tomcat服务器,然后将保存路径中的“upload”文件夹创建出来。在浏览器中输入“http://localhost:8080/upload.html”,进入HTML表单页面。在页面上选择一个文件,并点击表单中的“Upload”按钮。上传成功后,浏览器会显示“Upload success!”这段文本,服务器上的“upload”文件夹中会出现上传的文件。

示例2:响应上传结果

在Servlet的doPost方法中添加如下代码:

response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("File " + fileName + " has been uploaded successfully!");

然后重新执行示例1中的步骤,上传成功后,浏览器会显示“File [文件名] has been uploaded successfully!”这段文本。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现一个简单的文件上传案例示例代码 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java实现远程控制技术完整源代码分享

    Java实现远程控制技术完整源代码分享 概述 远程控制技术是指可以通过网络远程控制另一台电脑。而 Java 实现远程控制则是一种基于 Java 技术实现远程控制的方法,可以使得用户在任意位置使用电脑远程控制被控制的电脑,非常实用。 在此,本文将会为大家讲解 Java 实现远程控制技术的完整攻略,并且分享完整的源代码。 技术准备 在开始编写完整的源代码之前,需…

    Java 2023年5月19日
    00
  • Struts2配置文件中使用通配符的方法(三种形式)

    使用通配符在Struts2配置文件中可以方便地定义多个相似的Action或者Interceptor,以及进行全局的配置。 在Struts2的配置文件中,有三种形式可以使用通配符,分别如下: 使用“”号通配符 例如:<package name=”default” extends=”struts-default”> <action name=”…

    Java 2023年5月20日
    00
  • Spring Boot使用yml格式进行配置的方法

    SpringBoot使用yml格式进行配置的方法 在SpringBoot中,我们可以使用yml格式来进行配置。yml格式相比于properties格式更加简洁易读,可以提高配置文件的可维护性。本文将详细讲解SpringBoot使用yml格式进行配置的方法,并提供两个示例。 1. yml格式基本语法 yml格式使用缩进来表示层级关系,使用冒号来表示键值对。以下…

    Java 2023年5月15日
    00
  • Java超详细讲解设计模式之一的单例模式

    Java超详细讲解设计模式之单例模式 1. 什么是单例模式? 单例模式是一种常用的设计模式,简单来说就是保证一个类只有一个实例,并且提供一个全局访问点。 它能够避免因为对象过多而导致系统性能下降的问题,实现对象的复用,以及编译器对一些变量、对象和方法进行统一管理的好处。 常见应用场景有以下几个方面: 一个对象需要在系统中被重复使用 一个共享资源(如数据库等)…

    Java 2023年5月26日
    00
  • 对象的创建过程包括哪些步骤?

    以下是关于“对象的创建过程包括哪些步骤?”的完整使用攻略: 1. 对象的创建过程 在Java中,对象的创建过程包括以下几个步骤: 类加载:在Java程序运行,JVM会将类的字节码加载到内存中,并对类进行解析和验证。 分配内存:在类加载完成后,VM会在堆内存中为对象配一块连续的内存空间。在分配内存时,JVM会根据对象的大小和内存分配策略来确定内存分配方式。 初…

    Java 2023年5月12日
    00
  • Java接口的作用_动力节点Java学院整理

    Java接口的作用_动力节点Java学院整理 一、什么是Java接口 Java接口是抽象类的一种特殊形式,它只包含抽象方法、常量和默认方法。接口中所有的成员都是public访问修饰符(当然也可以省略不写public),即所有的成员方法和数据字段都必须是公开的。 二、Java接口的作用 Java接口作为Java中的一种设计思想,在实际开发中具有如下几个作用: …

    Java 2023年5月30日
    00
  • Tomcatc3p0配置jnid数据源2种实现方法解析

    Tomcat+c3p0配置jndi数据源2种实现方法解析 在Java Web应用中,使用数据库是非常常见的需求。而常用的JDBC操作数据库的方式,需要手动处理连接的获取、释放、连接池的创建和维护等操作。为了简化这些操作并提供更好的性能表现,我们可以使用连接池,而c3p0就是常用的Java连接池之一。不过在Tomcat中,我们可以使用J2EE规范对数据源进行配…

    Java 2023年5月19日
    00
  • java 处理常量字符串过长 & springboot 项目读取 resouces 文件夹下的文件内容

    长字符串起因 项目里面有一长串的加密字符串(最长的万多个字符),需要拼接作为参数发送给第三方。 如果我们使用 枚举 定义的话,idea 编译的时候就会出现编译报错 Error: java:常量字符串过长 解决想法 网上还有一个说法,说是编译器问题,修改 idea 工具的编译为 eclipse 即可。 但是结果我仍然不满意,所以我决定把他放在文件中,然后需要的…

    Java 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部