java 上传文件并读取_JavaWeb实现本地文件上传功能

package cn.itcast.fileupload;

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 javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.*;

import java.util.List;

import java.util.UUID;public classUploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;

@Overrideprotected voiddoGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try{//设置ContentType字段

resp.setContentType("text/html;charset=utf8");//创建DiskFileItemFactory工厂对象,可以将请求消息实体中的每一个文件封装成单独的FielItem对象

DiskFileItemFactory factory = newDiskFileItemFactory();//设置文件缓存目录,如果该文件不存在则新创建一个

File f = new File("/Users/liuliu/Desktop/my");if (!f.exists()) {

f.mkdir();

}//设置文件的缓存路径

factory.setRepository(f);//创建一个ServletFileUpload对象

ServletFileUpload fileUpload = newServletFileUpload(factory);//设置字符编码

fileUpload.setHeaderEncoding("utf-8");//解析request,得到上传文件的FileItem对象

List fileItems =fileUpload.parseRequest(req);//获取字符流

PrintWriter writer =resp.getWriter();//遍历对象fileItems对象的List集合

for(FileItem fileItem : fileItems) {//判断当前的FileItem对象封装的数据是"普通文本表单字段"

if(fileItem.isFormField()) {//获得上传的表单字段的name属性值

String name =fileItem.getFieldName();if (name.equals("name")) {//如果FileItem对象中保存的数据流不为空,则返回一个字符串,并通过print输出

if (!fileItem.getString().equals("")) {

String value= fileItem.getString("utf-8");

writer.print("上传者:" + value + "
");

}

}

}else {//判断当前的FileItem对象封装的数据是"文件表单字段"//获得上传文件的文件名

String filename =fileItem.getName();if (fileItem != null && !fileItem.equals("")) {

writer.print("上传的文件名称是" + filename + "
");//截取出文件名

filename = filename.substring(filename.lastIndexOf("\\") + 1);//给定文件名一个唯一的id

filename = UUID.randomUUID().toString() + "_" +filename;//在服务器中创建同名文件

String webPath = "/myima/";//将服务器中文件夹路径与文件名组合成完整的服务器端路径

String filePath = getServletContext().getRealPath(webPath +filename);//创建文件

File file = newFile(filePath);

file.getParentFile().mkdir();

file.createNewFile();//获得上传文件流

InputStream in =fileItem.getInputStream();//打开服务器端的上传文件

FileOutputStream fileOutputStream = newFileOutputStream(file);//流的对拷

byte buffer[] = new byte[1024];intlen;while ((len = in.read(buffer)) > 0) {

fileOutputStream.write(buffer,0, len);in.close();

fileOutputStream.close();

fileItem.delete();

writer.print("上传文件成功");

}

}

}

}

}catch(FileUploadException e) {

e.printStackTrace();

}

}

@Overrideprotected voiddoPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

}

简单的利用java与js实现文件上传 package com.fendou.myString; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import javax.servlet.ServletException; 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.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUpload extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean a=ServletFileUpload.isMultipartContent(request); if(a){ FileItemFactory factory=new DiskFileItemFactory(); ServletFileUpload upload=new ServletFileUpload (factory); Iterator items; try{ items=upload.parseRequest (request).iterator(); while(items.hasNext()){ FileItem item=(FileItem) items.next(); if(!item.isFormField()){ String name=item.getName (); String fileName=name.substring(name.lastIndexOf("\\")+1, name.length()); String path=request.getRealPath("file")+File.pathSeparatorChar+fileName; File uploadFile=new File (path); request.getSession ().setAttribute("file", uploadFile); item.write(uploadFile); response.setContentType ("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); // out.print("<font size='2'> 上传的文件为:"+name+"<br>"); // out.print("保存在服务器上 的地址为:"+path+"</font>"); } } }catch(Exception e){ e.printStackTrace(); } } response.sendRedirect("smartupload.jsp"); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值