星空网 > 软件开发 > Java

文件上传的核心点 一(59)

1:用<input type=”file”/> 来声明一个文件域。File:_____ <浏览>.

2:必须要使用post方式的表单。

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

文件上传的核心点 一(59)

对于一个普通的表单来说只要它是post类型。默认就是

Content-type:application/x-www-from-urlencoded

表现形式

       1:在request的请求头中出现。

       2:在form声明时设置一个类型enctype="application/x-www-form-urlencoded";

如果要实现文件上传,必须设置enctype=“multipart/form-data”

表单与请求的对应关系:


文件上传的核心点 一(59)

例子:如何获取上传的文件的内容(获取txt文件)



package cn.hx.servlet;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

 * 如果一个表单的类型是post且enctype为multipart/form-date

 * 则所有数据都是以二进制的方式向服务器上传递。

 * 所以req.getParameter("xxx")永远为null。

  * 只可以通过req.getInputStream()来获取数据,获取正文的数据

 */

public class UpServlet extends HttpServlet {

    public void doPost(HttpServletRequest req, HttpServletResponse resp)

           throws ServletException, IOException {

       req.setCharacterEncoding("UTF-8");

       String txt = req.getParameter("txt");//返回的是null

       System.err.println("txt is :"+txt);

       System.err.println("=========================================");

       InputStream in = req.getInputStream();

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

//     int len = 0;

//     while((len=in.read(b))!=-1){

//         String s = new String(b,0,len);

//         System.err.print(s);

//     }

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

       String firstLine = br.readLine();//读取第一行,且第一行是分隔符号

       String fileName = br.readLine();

       fileName = fileName.substring(fileName.lastIndexOf("\\")+1);// bafasd.txt"

       fileName = fileName.substring(0,fileName.length()-1);

       br.readLine();

       br.readLine();

       String data = null;

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

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

       PrintWriter out  = new PrintWriter(projectPath+"/"+fileName);

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

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

              break;

           }

           out.println(data);

       }

       out.close();

    }

}

 






原标题:文件上传的核心点 一(59)

关键词:上传

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

2019年亚马逊站内广告运营技巧:https://www.ikjzd.com/articles/96696
瞒报必重罚!各大船公司发严查通告!:https://www.ikjzd.com/articles/96697
一夜之间蒸发726亿!美芯片巨头受“重创”,华为迎来喘息机会!:https://www.ikjzd.com/articles/96698
Pinterest的视觉搜索功能或将大幅度提升顾客购物体验!:https://www.ikjzd.com/articles/9670
Shopee Q1订单暴涨82.7%!谁是品类MVP?:https://www.ikjzd.com/articles/96700
亚马逊站内广告投放你必须知道的技巧:https://www.ikjzd.com/articles/96706
如何从抖音上多挣钱?记住这12个字 :https://www.kjdsnews.com/a/1836445.html
连麦专家:2024年到底如何做小红书? :https://www.kjdsnews.com/a/1836446.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流