java利用http协议删除文件,java Servlet上传下载文件http协议原理详解

package com.shengke.servlet;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

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;

/**

* Servlet implementation class UploadServlet

*/

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doPost(request,response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//从request当中获取流信息

InputStream fileSource = request.getInputStream();

String tempFileName = "/home/shengke/图片/tempFile";

//tempFile指向临时文件

File tempFile = new File(tempFileName);

//outputStram文件输出流指向这个临时文件

FileOutputStream outputStream = new FileOutputStream(tempFile);

//循环读取输入流信息到输出流

byte b[] = new byte[1024];

int n;

while(( n = fileSource.read(b)) != -1){

outputStream.write(b, 0, n);

}

//关闭输出流、输入流

outputStream.close();

fileSource.close();

//获取上传文件的名称,可能需要根据实际情况修改

RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r");

System.out.println(randomFile.readLine());

String str = randomFile.readLine();

int beginIndex = str.lastIndexOf("filename=\"") + 10;

int endIndex = str.lastIndexOf("\"");

String filename = str.substring(beginIndex, endIndex);

System.out.println("fileName:" + filename);

//重新定位文件指针到文件头

randomFile.seek(0);

long startPosition = 0;

int i = 1;

//获取文件内容 开始位置,如果不等与-1且小于4

while(( n = randomFile.readByte()) != -1 && i <=4){

//如果读取到换行符,从新得到文件指针,这样就循环读取4行换行符

if(n == '\n'){

startPosition = randomFile.getFilePointer();

i ++;

}

}

startPosition = randomFile.getFilePointer() -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 realPath = getServletContext().getRealPath("/") + "images";

String realPath = "/home/shengke/workspace/fileSCXZ/WebContent/images";

System.out.println("realPath:"+realPath);

File fileupload = new File(realPath);

//如果路径不存在,就创建路径

if(!fileupload.exists()){

fileupload.mkdir();

}

File saveFile = new File(realPath,filename);

RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw");

//从临时文件当中读取文件内容(根据起止位置获取)

randomFile.seek(startPosition);

while(startPosition < endPosition){

randomAccessFile.write(randomFile.readByte());

startPosition = randomFile.getFilePointer();

}

//关闭输入输出流、删除临时文件

randomAccessFile.close();

randomFile.close();

//如果想看看你上传的临时文件,可以把下面这行注释了,就可以在tempFileName路径下看到临时文件了

tempFile.delete();

request.setAttribute("result", "上传成功!");

RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/index.jsp");

dispatcher.forward(request, response);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值