java之jersey实现单个,多个文件上传

java之jersey实现单个,多个文件上传


前台传入的file需要用对象FormDataBodyPart的List来接收,然后通过循环取出每个对象,进而得到文件名称等其他信息,相关代码如下:

  • 接收前台传的file:
	@POST
	@Produces(MediaType.APPLICATION_JSON)
	@Consumes(MediaType.MULTIPART_FORM_DATA)
	@Path("/docuUpload")
	public ResultEntity uploadDocuments(
			@FormDataParam("docuName") String docuName,
			@FormDataParam("docuExpire") String docuExpire,
			@FormDataParam("files") List<FormDataBodyPart> upload
			){
  • for循环取出每个对象:
    String fileName = null;
			for(FormDataBodyPart p : upload){
				fileName = p.getContentDisposition().getFileName();//获取文件名称
				try {
					if(null!=fileName){
						fileName=new String(fileName.getBytes("ISO8859-1"),"UTF-8");//中文乱码
						info("fileName="+fileName);	
					}
  • 将文件写入服务器的代码,例为通过工具类进行调用:
    //FilePath为将文件存储至某个文件夹的绝对路径
	public static List<String> FileWrite( List<FormDataBodyPart> upload,String FilePath,String fileName){
		File fileDir = new File(FilePath);
		List<String> fileAbNames = new ArrayList<>();
		if(!fileDir.exists()){
			fileDir.mkdirs();
		}
		
		for (FormDataBodyPart p : upload) {
            InputStream in=p.getValueAs(InputStream.class);
            String filePath = FilePath+File.separatorChar+fileName;
            File osFile = new File(filePath);
            if(!osFile.exists()){
            	try {
					osFile.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
				}
            }
            FileOutputStream os  = null;
            try {
				os = new FileOutputStream(osFile);
				byte[] buff = new byte[1024*1024];
				int buffRead;
				while((buffRead = in.read(buff))>0){
	    			os.write(buff,0,buffRead);
	    		}
				os.flush();
				fileAbNames.add(fileName);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				try {
					in.close();
					os.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return fileAbNames;//返回的是文件的绝对路径
	}

以上就是通过jersey实现单个或者多个文件的上传,希望能帮助到大家,不好的地方也希望评论区批评指正。

其他博客:
批量文件处理之 根据文件后缀名实现自动分类

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值