基于java文件上传

网友投稿 218 2023-04-22


基于java文件上传

前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,RT,不能好高骛远,还是脚踏实地一点一点学技术吧,终将有一日,工资会涨的。

java文件上传

传统的文件上传,不用jquery插件的话,就是用form表单提交,项目里用过uploadify,可以异步上传文件,原理我也没研究。现在说传统的form表单上传文件。

文件上传核心:

来声明一个文件域。样式如 文件:_____ <浏览>.

必须使用post方式提交表单。

必须设置表单的类型为multipart/form-data.是设置这个表单传递的不是key=value值。传递的是字节码.

新建web项目:

jsp form表单:enctype(编码类型)的默认值就是 application/x-www-form-urlencoded

package com.lhy.upload;

import java.io.BufferedReader;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author Administrator

*

*/

@WebServlet(name="UploadServlet",urlPatterns="/UploadServlet")

public class UploadServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// this.doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding("UTF-8");

String contentType = req.getHeader("Content-type");

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

String name = req.getParameter("name");

System.out.println(name);//null

InputStream is = req.getInputStream();

// ------WebKitFormBoundaryG0ULv7eVfQ1K2PBA

// Content-Disposition: form-data; name="image"; filename="静夜思.txt"

// Content-Type: text/plain

//

//

// ------WebKitFormBoundaryG0ULv7eVfQ1K2PBA--

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String firstLine = br.readLine();//第一行,分隔符

String fileName = br.readLine();

// Content-Disposition: form-data; name="image"; filename="jingyesi.txt"

fileName = fileName.substring(fileName.lastIndexOf("=")+2,fileName.length()-1);

br.readLine();

br.readLine();

String data = null;

//获取当前项目的运行路径

String path = getServletContext().getRealPath("/up");

PrintWriter pw = new PrintWriter(path+"/"+fileName);

while((data = br.readLine()) != null){

if(data.equals(firstLine+"--")){

break ; //读到了文件尾

}

pw.println(data);

}

pw.flush();

pw.close();

is.close();

/* FileOutputStream fos = new FileOutputStream(path+"/"+"b.doc");

// byte[] b = new byte[1024];

int len = 0;

while((len = is.read()) != -1){

fos.write(len);

}

fos.flush();

fos.close();

is.close();*/

}

}

项目里:

例子只是读取了txt,其他的二进制需要使用inputStream读取。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:物联网安全芯片接口设计(物联网安全芯片龙头股)
下一篇:java 接口和实现类(java接口的实现方式有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~