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); } }
最近下载更多
最近浏览更多
uni-code_0123 LV1
2023年11月11日
jameshkj LV8
2023年5月18日
人工智能4708 LV11
2023年5月1日
ninini121 LV1
2023年3月28日
Java开发工程师_初心 LV1
2022年12月17日
微信网友_6255804817526784
2022年12月10日
暂无贡献等级
wy1179682217
2022年11月27日
暂无贡献等级
dongzhan LV12
2021年12月15日
酒非儿 LV6
2021年12月10日
Aoifee LV4
2021年11月11日