在Java中,我们可以使用Servlet和Apache的Commons FileUpload库来实现文件上传功能,以下是一个简单的示例:
成都创新互联是网站建设技术企业,为成都企业提供专业的成都做网站、网站建设,网站设计,网站制作,网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制适合企业的网站。10多年品质,值得信赖!
1、我们需要在项目中引入Apache Commons FileUpload库,在pom.xml文件中添加以下依赖:
commons-fileupload commons-fileupload 1.4
2、创建一个HTML表单,用于上传文件:
文件上传
3、创建一个Servlet类,用于处理文件上传请求:
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; 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 java.io.File; import java.io.IOException; import java.util.List; @WebServlet("/upload") public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查是否为多媒体上传 if (!ServletFileUpload.isMultipartContent(request)) { // 如果不是则停止 PrintWriter writer = response.getWriter(); writer.println("Error: 表单必须包含 enctype=multipart/form-data"); writer.flush(); return; } // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); upload.setFileSizeMax(50 * 1024 * 1024); // 设置最大上传文件大小为50MB upload.setHeader("Connection", "Keep-Alive"); upload.setHeader("Charset", "UTF-8"); upload.setHeader("Content-Disposition", "attachment;filename="uploaded_file""); // 设置上传文件名 upload.setThreadPoolSize(10); // 设置线程池大小为10个线程 upload.setProgressListener(new UploadProgressListener()); // 设置上传进度监听器 upload.start(); //开始上传文件的处理流程,这里的参数是用来接收服务器返回的数据的,如果不需要处理服务器返回的数据,可以不传这个参数,否则需要传入一个实现了org.apache.commons.fileupload包中的IProgressListener接口的对象作为参数,这个对象将会在每次文件块传输时被调用,这样就可以实时得到文件上传进度的信息了,然后通过list来获取所有的文件项信息,最后将这些文件保存到指定位置,这里使用到了org.apache.commons.fileupload包中的FileItem类,该类代表了一个要被上传的文件项,它包含了文件的所有信息,如文件名、大小、类型等,然后根据这些信息创建一个File对象,并将其保存到指定位置,最后关闭流和连接即可,下面是代码实现: ```java @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //检查是否为多媒体上传 if (!ServletFileUpload.isMultipartContent(req)) { PrintWriter writer = resp.getWriter(); writer.println("Error: form must have enctype=multipart/form-data"); writer.flush(); return; } //配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); //创建一个对象用于存储所有文件数据 ListformItems = upload.parseRequest(req); if (formItems != null && formItems.size() > 0) { //迭代表单数据 for (int i = 0; i < formItems.size(); i++) { //获取当前表单项 FileItem item = formItems.get(i); if (!item.isFormField()) { String name = new String(item.getName()); String filename = name + System.currentTimeMillis() + "_" + item.getContentType(); String filePath = getServletContext().getRealPath("/upload") + File.separator + filename; File storeFile = new File(filePath); //保存文件 item.write(storeFile); System.out.println("文件已保存:" + filePath); } else { String value = item.getString("value"); System.out.println("字段名:" + item.getFieldName() + ",值:" + value); //输出表单字段的值 if (item != null && item instanceof org.apache.commons.fileupload.disk.DiskFileItem){ try{ ((org.apache.commons.fileupload.disk.DiskFileItem)item).delete();} catch (Exception e){}//删除临时文件 try{ ((org
本文名称:Java怎么实现文件上传和下载功能
网站网址:http://www.shufengxianlan.com/qtweb/news17/79217.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联