博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过JSP+servlet实现文件上传功能
阅读量:5032 次
发布时间:2019-06-12

本文共 3129 字,大约阅读时间需要 10 分钟。

     在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制。

     但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的。

     通过为表单元素设置Method="post" enctype="multipart/form-data" 属性,让表单提交的数据以二进制编码的方式提交,在接受此请求的servlet中的二进制流来获取内容,就可以取得上传文件的内容,从而实现文件的上传。

代码分两部分

part1:前台页面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>            
请选择上传的文件:   ${result}

part2:servlet代码

package com.file;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.RandomAccessFile;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UploadFile extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {        doPost(request,response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {                //写入缓存文件        InputStream fileSource=request.getInputStream();        String tempFileName="E:/tempFile";        File tempFile=new File(tempFileName);        FileOutputStream outputStram=new FileOutputStream(tempFile);        byte[] b=new byte[1024];        int n;        while((n=fileSource.read(b))!=-1){            outputStram.write(b,0,n);        }                outputStram.close();        fileSource.close();        System.out.println("成功");                //获取文件名        RandomAccessFile randomFile=new RandomAccessFile(tempFile,"r");        randomFile.readLine();        String str=randomFile.readLine();        int beginIndex=str.lastIndexOf("\\")+1;        int endIndex=str.lastIndexOf("\"");        String filename=str.substring(beginIndex, endIndex);        System.out.println("filename:"+filename);         //获取上传文件内容的开始位置            randomFile.seek(0);        long startPosition=0;        int i=1;        while((n=randomFile.readByte())!=-1&&i<=4){            if(n=='\n'){                startPosition=randomFile.getFilePointer();                i++;            }        }        startPosition=startPosition-1;                 //获取上传文件内容的结束位置              randomFile.seek(randomFile.length());        long endPosition=randomFile.getFilePointer();        int j=1;        while(endPosition>=0&&j<=2){            endPosition--;            randomFile.seek(endPosition);            if(randomFile.readByte()=='\n'){                j++;               }        }        endPosition=endPosition-1; //上传文件         String path=getServletContext().getRealPath("/")+"MyImages"; //指定上传文件的目录         File fileupload=new File(path);        if(!fileupload.exists()){             fileupload.mkdir();        }        File saveFile=new File(path,filename);        RandomAccessFile RAF=new RandomAccessFile(saveFile,"rw");        randomFile.seek(startPosition);        while(startPosition

 

转载于:https://www.cnblogs.com/JsonShare/p/4499955.html

你可能感兴趣的文章
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>
判断CPU大小端示例代码
查看>>
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>