广州粤嵌培训机构从化区校区嵌入式加java培训
学校服务热线全国服务热线:400-0859-208

一文读懂Java怎么实现文件上传到文件夹

文件在每种编程语言中都起着至关重要的作用。为了使用 File,每个开发人员都应该了解如何用 Java 或其他编程语言实现文件上传功能。

在本节中,我们将了解如何在 Java 中实现文件上传功能,还将了解如何将文件上传到文件夹。

在Java中,我们使用单个servlet和HTML表单来创建对 servlet 的文件上传请求。我们实现了一个简单的HTML表单,它有两个字段,即 File 和 Destination。文件类型的输入字段允许用户从系统浏览文件。从系统中选择文件后,我们将文件作为 POST 请求发送到服务器。我们为表单添加了两个限制,即encrypt="multipart/form-data"和method="POST"。

有了这个限制,请求以编码形式发送到服务器。servlet 处理 POST 请求,处理传入的文件数据,并从流中提取 File。目的地定义了我们需要在系统中保存文件的位置的路径。数据被发布到 servlet,当我们单击 Upload 按钮时,它将文件存储到指定位置。

HTML表单的代码如下:

索引.html

<!DOCTYPE html> <html lang= "en" > <头部> <title>Servlet 文件上传示例</title> <meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" > </head> <正文> <form method= "POST" action= "uploadFile" enctype= "multipart/form-data" > 文件: <输入类型= “文件” 名称= “文件” ID= “文件” /> <br/> <br/> 目的地: <输入类型= “文本” 值= “/javaTpoint” 名称= “目标” /> <br/> <br/> <输入类型= “提交” 值= “上传” 名称= “上传” id= “上传” /> </form> </正文> </html> 

输出:

POST 和 GET 是我们在提交表单时可以使用的两种方法。在这里,当我们提交表单时,浏览器通过组合所有部分来流式传输内容。每个部分都定义了表单的字段。

@WebServlet (name = " FileUploadServletExample " , urlPatterns = { "/upload" })  
@MultipartConfig  
公共类 FileUploadServletExample 扩展 HttpServlet {   
    私有较终静态 记录器 LOGGER =     
            Logger.getLogger(FileUploadServlet.class .getCanonicalName ()); 

在上面的代码中,我们使用了两个注解,即具有属性 name 和 urlPatterns 的@WebServlet和@MultipartConfig。

@WebServlet 和 @MultipartConfig 注释用于定义 servlet 映射并指示 servlet 期望分别使用 multipart/form-data MIME 类型发出的请求。

servlet 执行以下步骤将文件数据存储到目标文件夹中:

servlet的saveFileToFolder方法从请求中检索位置和文件。

之后,它通过使用getFileName()从文件部分获取文件的名称

Servlet 创建FileOutputStream类的实例,并通过使用它,将 File 存储到指定位置。

try 部分处理将 File 存储到指定位置的代码,catch 部分处理无法存储 File 的过程的错误。

FileUploadServletExample.java

@WebServlet (name = " FileUploadServletExample " , urlPatterns = { "/upload" }) @MultipartConfig 公共类 FileUploadServletExample 扩展 HttpServlet { private final static Logger LOGGER = Logger.getLogger(FileUploadServlet.class .getCanonicalName ()); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
        response.setContentType( "text/html;charset=UTF-8" ); // 创建用于保存文件的路径组件  final String path = request.getParameter( "destination" ); final Part filePart = request.getPart( "file" );  
        较终 字符串文件名 = getFileName(filePart); // 声明 OutputStream、InputStream 和 PrintWriter 类的实例  输出流 otpStream = null ;  
        输入流 iptStream = null ;  
        较后 的 PrintWriter writer = response.getWriter(); // try 部分处理将文件存储到指定位置的代码  试试 { // 初始化 OutputStream 和 InputStream 类的实例  otpStream = new FileOutputStream( new File(path + File.separator + fileName));  
            iptStream = filePart.getInputStream(); int 读取 = 0 ; // 初始化字节数组用于存储文件数据  较终字节[]字节= 新字节[ 1024 ]; // 使用 while 循环使用 iptStream 从文件中读取数据,并使用 writer 和 otpStream 写入目标文件夹  而 ((读取= iptStream.read(字节))!= - 1 ){  
                otpStream.write(字节, 0 ,读取);  
            }  
            writer.println( "新文件" +文件名+ "创建于" +路径);  
            LOGGER.log(Level.INFO, "文件{0}上传到 {1}" , new Object[]{fileName, path});  
        } // catch 部分处理错误  捕捉 (FileNotFoundException fne){  
            writer.println( "您要么没有指定要上传的文件,要么正在尝试将文件上传到受保护或不存在的位置。" );  
            writer.println( "<br/>错误:" + fne.getMessage());  
            LOGGER.log(Level.SEVERE, "文件上传时出现问题。错误:{0}" , new Object[]{fne.getMessage()});  
        } // finally 部分将关闭所有打开的类  较后 {  
            如果 (otpStream!= null ){  
                otpStream.close();  
            }  
            如果 (iptStream!= null ){  
                iptStream.close();  
            }  
            如果 (作家!= null ){  
                writer.close();  
            }  
        }  
    } // getFileName() 方法从部件中获取文件名  私人 字符串getFileName(较后 一部分){ // 从部件中获取 header(content-disposition)  final String partHeader = part.getHeader( "content-disposition" );  
        LOGGER.log(Level.INFO, "Part Header = {0}" , partHeader); // 从头部获取文件名的代码  for (字符串内容:part.getHeader(“内容处置” ).split(“;” )){ if (content.trim().startsWith( "文件名" )) {  
                返回 content.substring(content.indexOf( '=' ) + 1 ).trim().replace( "\"" , "" );  
            }  
        } // 没有在头部获取文件名时返回null  返回空值;   
    }  
} 

为了构建、打包、部署和运行文件上传程序,我们可以使用 NetBeans、Eclipse 或 Ant。对于 NetBeans,我们使用以下步骤:

从文件中选择打开项目它会打开项目对话框。

从Open Project 对话框中,我们导航到tut-install/examples/web/

从该目录中,我们选择 fileupload 文件夹。

我们选中Open as Main Project复选框,然后单击Open Project

在 Projects 选项卡中,右键单击 fileupload 并选择 Deploy。

现在,我们导航到浏览器并输入以下 URL:

http://localhost:8080/fileupload/

输入 URL 并按回车键后,将打开我们在上面创建的 HTML 表单。我们浏览系统并选择一个文件将其上传到所需位置。在目标字段中,我们输入需要存储该文件的目录的路径。该目录应该已经在系统中创建并且必须是可写的。如果我们没有为目标字段设置任何内容并单击上传按钮,它将引发异常。

当我们点击上传按钮时,一个 POST 请求发送到 servlet,它会将文件复制到目标文件夹。

单击上传按钮后,我们进入指定目录并验证上传的文件是否存在。

一文读懂Java怎么实现文件上传到文件夹

以上就是关于“一文读懂Java怎么实现文件上传到文件夹”的介绍,大家如果想了解更多相关知识,不妨来关注一下粤嵌培训机构的Java学习课程,里面的课程内容从入门到精通,细致全面,很适合没有基础的小伙伴学习,相信对大家会有所帮助的。

尊重原创文章,转载请注明出处与链接:http://news.peixun360.com/940449/ 违者必究! 以上就是 广州粤嵌培训机构从化区校区嵌入式加java培训 小编为您整理 一文读懂Java怎么实现文件上传到文件夹 的全部内容。

版权所有:培训指南(www.peixun360.com) 技术支持:培训指南网

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-0859-208