首页 > 解决方案 > 在一个请求中将多个文件发送到 webdav 服务器

问题描述

我想在一个请求中向 webdav 服务器发送 100 个文件。我正在获取消息列表,然后创建它们的二进制正文部分。这是我的代码,它让我得到 301 http 错误响应代码。当我发送一个文件时,它正在工作,但预期的行为是发送部分文件。我希望它在服务器上一个一个地创建,可以吗?

 CloseableHttpClient client = HttpClients.createDefault();
        HttpPut httpPost = new HttpPut("http://localhost:8888/webdav"); // I also tried with / at the end

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();

        messages.forEach(m -> {
            builder.addBinaryBody("file", new File(Paths.get(m.getPath()).toAbsolutePath().toString()),
                    ContentType.APPLICATION_OCTET_STREAM, m.getFileName() + ".encryptedByAes");
            builder.addBinaryBody("file", new File(Paths.get(m.getAesPath()).toAbsolutePath().toString()),
                    ContentType.APPLICATION_OCTET_STREAM, m.getFileName() + ".aes");
        });

        HttpEntity multipart = builder.build();
        httpPost.setEntity(multipart);

        UsernamePasswordCredentials creds
                = new UsernamePasswordCredentials("test", "test");
        httpPost.addHeader(new BasicScheme().authenticate(creds, httpPost, null));

        CloseableHttpResponse response = client.execute(httpPost);
        if (response.getStatusLine().getStatusCode() != HTTP_OK) {
            throw new WebDavException("Error while executing request to webdav server with messages");
        }
        client.close();

标签: webdav

解决方案


推荐阅读