zoukankan      html  css  js  c++  java
  • Servlet doPost方法同时上传图片和传递参数

    上传图片和传递参数

    上传图片和文件属于enctype="multipart/form-data" 
    form中加入enctype="multipart/form-data"时整个表单被封装,字符将转成二进制流,因此request.getParameter("user_type")是得不到值的:
    默认情况,传递参数编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,
    
     
    同时上传文件与图片
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    
    List items = null;
    try {
         items = upload.parseRequest(request);
    } catch (FileUploadException e) {
    e.printStackTrace();
    } // 解析request请求
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();
    if (item.isFormField()) {  // 如果是表单域 ,就是非文件上传元素
        String name = item.getFieldName(); // 获取name属性的值
        String value = item.getString(); // 获取value属性的值
    if (item.getFieldName().equals("intro")) {
        System.out.println(value+"yeah");
    }
    } else {
        String fieldName = item.getFieldName(); // 文件域中name属性的值
        String fileName = item.getName(); // 文件的全路径,绝对路径名加文件名
        String contentType = item.getContentType(); // 文件的类型
        long size = item.getSize(); // 文件的大小,以字节为单位
        File saveFile = new File("D:/test.jpg"); // 定义一个file指向一个具体的文件
    try {
        item.write(saveFile);// 把上传的内容写到一个文件中
      } catch (Exception e) {
        e.printStackTrace();
      } 
    }}
    要解析二进制流来得到文本参数
  • 相关阅读:
    Codeforces Round448 D
    Codeforces Round448 C Square Subsets
    hdu6006
    2017计蒜客计算之道初赛第六场 微软大楼设计方案(困难)
    UVA 12105 Bigger is Better
    Codeforce 55D Beautiful numbers
    4月补题
    C++小技巧之CONTAINING_RECORD
    Codeforces #380 div2 E(729E) Subordinates
    Codeforces #380 div2 D(729D) Sea Battle
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7294192.html
Copyright © 2011-2022 走看看