当前位置: 首页 > 面试题库 >

如何编写一个接受二进制文件(pdf)的静态Web服务

束志业
2023-03-14
问题内容

我试图用Java编写一个宁静的Web服务,该服务将包含一些字符串参数和一个二进制文件(pdf)参数。

我知道如何做字符串,但是我却挂在二进制文件上了。有什么想法/例子吗?

这是我到目前为止的

@GET
@ConsumeMime("multipart/form-data")
@ProduceMime("text/plain")
@Path("submit/{client_id}/{doc_id}/{html}/{password}")
public Response submit(@PathParam("client_id") String clientID,
                   @PathParam("doc_id") String docID,
                   @PathParam("html") String html,
                   @PathParam("password") String password,
                   @PathParam("pdf") File pdf) {
  return Response.ok("true").build();
}

由于我已经发布了此链接,因此删除了具有答案的链接,因此这是我的实现。

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
@Path("submit")
public Response submit(@FormDataParam("clientID") String clientID,
                   @FormDataParam("html") String html,
                   @FormDataParam("pdf") InputStream pdfStream) {

    try {
        byte[] pdfByteArray = DocUtils.convertInputStreamToByteArrary(pdfStream);
    } catch (Exception ex) {
        return Response.status(600).entity(ex.getMessage()).build();
    }
}


...

public static byte[] convertInputStreamToByteArrary(InputStream in) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    final int BUF_SIZE = 1024;
    byte[] buffer = new byte[BUF_SIZE];
    int bytesRead = -1;
    while ((bytesRead = in.read(buffer)) > -1) {
        out.write(buffer, 0, bytesRead);
    }
    in.close();
    byte[] byteArray = out.toByteArray();
    return byteArray;
}

问题答案:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
@Path("submit")
public Response submit(@FormDataParam("clientID") String clientID,
                   @FormDataParam("html") String html,
                   @FormDataParam("pdf") InputStream pdfStream) {

    try {
        byte[] pdfByteArray = DocUtils.convertInputStreamToByteArrary(pdfStream);
    } catch (Exception ex) {
        return Response.status(600).entity(ex.getMessage()).build();
    }
}


...

public static byte[] convertInputStreamToByteArrary(InputStream in) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    final int BUF_SIZE = 1024;
    byte[] buffer = new byte[BUF_SIZE];
    int bytesRead = -1;
    while ((bytesRead = in.read(buffer)) > -1) {
        out.write(buffer, 0, bytesRead);
    }
    in.close();
    byte[] byteArray = out.toByteArray();
    return byteArray;
}


 类似资料:
  • 问题内容: 我从事Web编程已经有几年了,自那时以来,我还没有为桌面应用程序做任何编程,而且我已经忘记了很多事情。如果这太简单,请耐心等待。 现在我有这种情况: 我正在尝试将一些散列字存储在文件中。我想我应该为此使用二进制文件(如果我错了,请纠正我)。但是我不知道如何将单词写到文件中。我尝试了很多方法,但是当我读回文件并尝试解密单词时,我得到了。 有谁知道如何将单词写到文件中? PS:我使用以下代

  • 问题内容: 如何解析编译静态二进制文件,其中的代码包含函数gethostbyname,并且如果编译时未发出如下警告: 警告:在静态链接的应用程序中使用’gethostbyname’要求在运行时需要glibc版本中用于链接的共享库 我用命令在ubuntu 12.04上编译: 这是lookup.c的代码: 我想检查是否将获得如下输出: 查找:ELF 32位LSB可执行文件,Intel 80386版本1

  • 问题内容: 我有一个字节列表作为整数,这类似于 如何将此列表作为二进制文件写入文件? 这行得通吗? 问题答案: 这正是用于: 如果您使用的是Python 3.x,则可以改用(也许应该这样做,因为它可以更好地表明您的意图)。但是在Python 2.x中,这是行不通的,因为它只是的别名。像往常一样,使用交互式解释器进行显示比使用文本进行解释要容易,所以让我这样做。 Python 3.x: Python

  • 问题内容: 这可能是一个非常业余的问题。我正在尝试将静态文件嵌入到二进制文件中。html。如何使用https://github.com/jteeuwen/go- bindata 做到这一点? 因此,我可以使用此https://github.com/jteeuwen/go-bindata#accessing-an- asset 访问资产,但是该如何处理“数据”,以及如何解析文件,执行模板以及服务他们

  • 问题内容: 我的要求是,我应该通过一个安静的服务将10MB的zip文件发送给客户端。我在论坛中找到了发送对象是更好的方法的代码,但是如何在以下代码中创建对象: 问题答案: 它是下载文件的更好方法和简便方法。 对于您所要求的代码:

  • 问题内容: 我想构建一个Go 1.9.2二进制文件并在Docker Alpine映像上运行它。我编写的Go代码不会调用任何C代码。它还使用该包。不幸的是,它并没有听起来那么简单,因为Go似乎并非一直都在构建静态二进制文件。当我尝试执行二进制文件时,我经常会收到有关为什么二进制文件未执行的神秘消息。互联网上有很多与此有关的信息,但是大多数最终都导致人们使用试用错误来使二进制文件有效。 到目前为止,我