【问题标题】:How do I do a multipart/form file upload with jax-rs?如何使用 jax-rs 进行多部分/表单文件上传?
【发布时间】:2011-02-07 21:13:15
【问题描述】:

(特别是 RESTeasy)

如果有这样的方法签名(对于单个文件)会很好:

public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream)
... 

可行吗?还是我在做梦?似乎没有那么简单。

【问题讨论】:

    标签: jax-rs resteasy


    【解决方案1】:

    关键是利用RESTEasy 附带的@MultipartForm 注解。这使您可以定义一个包含表单所有部分的 POJO 并轻松绑定它。

    以下面的 POJO 为例:

    public class FileUploadForm {
        private byte[] filedata;
    
        public FileUploadForm() {}
    
        public byte[] getFileData() {
            return filedata;
        }
    
        @FormParam("filedata")
        @PartType("application/octet-stream")
        public void setFileData(final byte[] filedata) {
            this.filedata = filedata;
        }
    }
    

    现在你需要做的就是在看起来像这样的实体中使用这个 POJO:

    @POST
    @Path("/upload")
    @Consumes("multipart/form-data")
    public Response create(@MultipartForm FileUploadForm form) 
    {
        // Do something with your filedata here
    }
    

    【讨论】:

    • raiglstorfer,您将如何设置请求以测试此服务?
    • @c12 我使用 cURL 来测试我的 RESTeasy 方法。像这样的东西应该可以工作:curl -F filedata=@yourfile.png http://localhost:8080/Project/rest-servlet/upload,更多信息在这里:link
    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    相关资源
    最近更新 更多