java上传文件到servlet接口 5C

如何实现把文件流(或字节数组)从一个接口传到servlet接口,使用post方式提交,
文件流(或字节数组)有可能较大,在servlet中如何接收到文件流。在线急等

12个回答

采用Servlet3.0的@MultipartConfig标签。发送方采用multipart/form-data

格式。接收的代码我给你列出来,关键步骤有注释

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import com.sun.xml.internal.ws.util.ByteArrayBuffer;


@MultipartConfig(location="./", maxFileSize = 1024*1024*20)
public class upfile extends HttpServlet{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


          //获取注解中设置的值
          private static MultipartConfig config
              = upfile.class.getAnnotation(MultipartConfig.class);
          public upfile() {
              // TODO Auto-generated constructor stub
          }
          public void doPost(HttpServletRequest request,
                  HttpServletResponse response) throws ServletException, IOException{
              request.setCharacterEncoding("UTF-8");
              Collection<Part> list =  request.getParts();
              PrintWriter out = response.getWriter();
              response.setContentType("text/html;charset=UTF-8");

              for(Part part:list){
                  String header = part.getHeader("Content-Disposition");
                  if(header.indexOf("filename")==-1)
                      continue ;
                  String fileName = header.substring(header.indexOf("filename=\"")+10,
                  header.lastIndexOf("\""));//获得上传的文件名,没有判断用户没有选择文件直接提交的情况,没有判断上传文件失败的情况
                  if("bg".equals(part.getName())||"head".equals(part.getName())){
                  //为了避免文件重名,将时间组合到了文件名中。实际项目中可以考虑使用用户主键或者生成一个唯一的ID来组合文件名。
                      String saveName =  fileName;
                      part.write(request.getSession().getServletContext().getRealPath("/")+"img/"+saveName);//将上传的文件保存到磁盘,默认是注解中location的相对地址,也可以传入一个绝对路径
                  }else{

                  }
              }
              out.println("ok");
    }

}


共12条数据 首页 2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!