小编use*_*187的帖子

S3 大文件上传使用签名链接

我正在尝试使用签名链接将一个非常大的文件(超过 10G)上传到 S3。该链接是从服务器获取的,因此我没有 AWS 凭证或存储桶等。由于文件大于 5GB,因此我拥有的唯一方法是分段上传。  

我的代码是这样的:

RequestBuilder request = RequestBuilder.post(uri);
request.addHeader("x-amz-server-side-encryption", "AES256");
request.addHeader("Content-Type", ct);
request.addHeader("Content-MD5", md5);

MultipartEntityBuilder entitybuilder = MultipartEntityBuilder.create();
entitybuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entitybuilder.addBinaryBody("file", file);

HttpEntity mutiPartHttpEntity = entitybuilder.build();
request.setEntity(mutiPartHttpEntity);

HttpClient client = HttpClientBuilder.create().build();

HttpResponse response = client.execute(request.build());
String responseStr = EntityUtils.toString(response.getEntity());
Run Code Online (Sandbox Code Playgroud)

这失败了:

Caused by: java.net.SocketException: Connection reset
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
    at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431)
Run Code Online (Sandbox Code Playgroud)

我猜失败的发生是因为 AWS 允许每个连接最多 100 个请求,这会保持活动状态并尝试在单个连接上上传所有内容。有没有办法设置每个部分的大小和/或使 Apache HTTP 客户端不保持连接打开?

我不必使用 Apache HTTP 客户端。任何进行此上传的方式都是可以接受的,因此我还查看了 AmazonS3 客户端,但我能找到的所有示例都具有 AWS 凭证。如果我有签名链接,是否可以使用 AmazonS3 进行上传?

java amazon-s3 amazon-web-services apache-httpclient-4.x

7
推荐指数
0
解决办法
161
查看次数

将自定义视图添加到jhipster应用程序

我想在index.html上为jhipster app添加自定义视图

我已经在navbar.html中创建了链接,并在路径src/main/webapp/scripts/app/custom/newView.html上添加了html文件

 <a ui-sref="newView" data-toggle="collapse" data-target=".navbar-collapse.in">
     <span class="glyphicon"></span>
     <span class="hidden-sm">new view</span>
 </a>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时,它不起作用.可能它需要一个有角度的自定义路线,但我无法弄清楚如何创建它.我还该怎么办?

jhipster

5
推荐指数
2
解决办法
3990
查看次数

容易出错的Java枚举重构

我正在重构一些旧的代码来使用enum's而不是String常量.我检讨我的代码时,我注意到,相比enumString将不会抛出异常.我无法删除旧常量,因为其他项目仍在使用它们.

我不能覆盖等于因为JLS特别禁止这个:

Enum中的equals方法是一个最终方法,它只在其参数上调用super.equals并返回结果,从而执行身份比较.

代码如下所示:

public enum Gender{
    MALE,
    FEMALE
}

// Constants for genders
public static final String MALE = "Male";
public static final String FEMALE = "Female";

//following are obviously false
MALE.equals(Gender.MALE) 
Gender.MALE.equals(MALE)
Run Code Online (Sandbox Code Playgroud)

对于常规对象,我可以覆盖equals并抛出异常,但对于我的示例,它将返回false.还有一个类似getGender的方法,它返回一个字符串,现在返回一个枚举,所以我可以错过一些地方,并将字符串与枚举进行比较

这很容易出错.FindBugs也没有报告任何错误.无论如何我可以防止这种情况吗?

java enums findbugs

2
推荐指数
1
解决办法
230
查看次数