5、WEB开发由浅入深系列BLOG-5(Servlet实现简单文件上传)
来源:互联网 发布:数据库第六版pdf网盘 编辑:程序博客网 时间:2024/06/01 09:15
Servlet实现文件的上传<!-- 上传文件不能够像提交文本信息一样,因为上传文件用到的是2进制的上传方式,所以要设置enctype="multipart/form-data" 而且在服务器端也要引入commons-fileupload.jar文件,-->客户端:<form action="/ServletTest/servlet/UploadFile.jsp" method="post" enctype="multipart/form-data"> <div align="center"> <fieldset style="width:80%;"> <legend>上传文件的案例</legend><br/> <div> <div align="left">上传文件</div> <div align="right"> <input type="file" name="file1"> </div> </div> <div> <input type="submit" name="sub" value="提 交"> </div> </fieldset> </div> </form>服务器端://声明一个fileFile file = null;//声明解析request的对象,来源于commons-fileupload.jar包中DiskFileUpload diskFileUpload = new DiskFileUpload();try {//解析reqeust对象List<FileItem> list = diskFileUpload.parseRequest(request);//由于只是上传了一个文件,在此就不遍历了FileItem f = list.get(0);//,得到文件名String filename = new String(f.getName().getBytes(),"utf-8");//赋值文件,注意后面的123.jpg,在这里我是写死的。在实际情况中用filename即可file = new File(this.getServletContext().getRealPath("attachment"),"123.jpg");//创建文件夹file.getParentFile().mkdir(); //创建新文件file.createNewFile();//得到文件的输入流InputStream is = f.getInputStream();//得到文件输出流OutputStream os = new FileOutputStream(file);//字节缓存byte[] bys = new byte[1024]; //真正的文件长度int len = 0;//将文件流写入到指定的文件中while((len = is.read(bys)) > -1){os.write(bys, 0, len);}System.out.println("已经保存文件到:"+file.getAbsolutePath());