Jersey file upload (java restful)


  1. Describe step by step upload media to server through Restful services (using jersey)
  2. Demo: build register page with text field and file field

Input user info


Upload result



Design client page

        <title>Demo jersey file upload</title>
        <meta charset="UTF-8">
        <meta name="viewport" 
              content="width=device-width, initial-scale=1.0">
        <H1>Demo jersey file upload</H1>
        <form action="rest/files/reg" method="POST" 
            <input type="Text" name="txtName"/><br/>
            <input type="file" name="file"/><br/><br/>
            <input type="submit" value="Upload" />


– Create restful service with uri as rest/files/reg
– Design function to handle above uri as below

    public String uploadFile(FormDataMultiPart form,
            @FormDataParam("txtName") String name) {
        FormDataBodyPart filePart = form.getField("file");
        ContentDisposition headerOfFile = filePart.getContentDisposition();
        InputStream fileInput = filePart.getValueAs(InputStream.class);
        String imgPath = application.getRealPath("") + "\\imgs\\" + headerOfFile.getFileName();
        int size = 0;
        int read = 0;
        try (OutputStream outpuStream = new FileOutputStream(new File(imgPath))) {
            byte[] bytes = new byte[1024];
            while ((read = != -1) {
                outpuStream.write(bytes, 0, read);
                size += read;
        } catch (Exception e) {
            return "<result>"+e.toString()+"</result>";
        NumberFormat f = NumberFormat.getNumberInstance(Locale.ENGLISH);
        String rs = "<result>"
                + "<name>" + name + "</name>"
                    + "<url>"
                        + application.getContextPath() + "/imgs/" + headerOfFile.getFileName()
                    + "</url>"
                    + "<fileInfo>"
                        + "<size>" + f.format(size) + " bytes</size>"
                        + "<type>" + filePart.getMediaType()+ "</type>"
                        + "<uploadDate>"
                            + Calendar.getInstance().getTime().toString()
                        + "</uploadDate>"
                    + "</fileInfo>"
                + "</result>";
        return rs;

@Consumes(MediaType.MULTIPART_FORM_DATA) map a data from to restful function
FormDataBodyPart filePart = form.getField(“file”); extract file field on the form
ContentDisposition headerOfFile = filePart.getContentDisposition(); get user file information

– lib for this demo: jersey, jersey-multipart.

Download source code


Phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập: Logo

Bạn đang bình luận bằng tài khoản Đăng xuất /  Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )


Connecting to %s