加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在InputStream中接收多个文件并相应地处理它?

发布时间:2020-12-15 04:18:50 所属栏目:Java 来源:网络整理
导读:我想收到从客户端上传的多个文件.我上传了多个文件并使用JAX-RS(Jersey)请求我的服务器端( Java). 我有以下代码, @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public void upload(@Context UriInfo uriInfo,@FormDataParam("file") final InputStream i
我想收到从客户端上传的多个文件.我上传了多个文件并使用JAX-RS(Jersey)请求我的服务器端( Java).

我有以下代码,

@POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void upload(@Context UriInfo uriInfo,@FormDataParam("file") final InputStream is,@FormDataParam("file") final FormDataContentDisposition detail) {
FileOutputStream os = new FileOutputStream("Path/to/save/" + appropriatefileName);
    byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer,length);
            }
}

如何在客户端上传的服务器端单独编写文件.

例如.我上传了My_File.txt,My_File.PNG,My_File.doc等文件.
我需要在服务器端编写与上面的My_File.txt,My_File.doc相同的内容.

我怎样才能做到这一点?

解决方法

你可以尝试这样的事情:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void upload(FormDataMultiPart formParams)
{
    Map<String,List<FormDataBodyPart>> fieldsByName = formParams.getFields();

    // Usually each value in fieldsByName will be a list of length 1.
    // Assuming each field in the form is a file,just loop through them.

    for (List<FormDataBodyPart> fields : fieldsByName.values())
    {
        for (FormDataBodyPart field : fields)
        {
            InputStream is = field.getEntityAs(InputStream.class);
            String fileName = field.getName();

            // TODO: SAVE FILE HERE

            // if you want media type for validation,it's field.getMediaType()
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读