我的 Amazon S3 存储桶工作正常,直到我决定将我的 aws sdk 从版本 v2 更新到模块化 v3。
我可以使用 sdk 以编程方式上传文件,但无法使用它生成的预签名 URL 上传文件。
const { getSignedUrl } = require('@aws-sdk/s3-request-presigner');
const { S3Client, , PutObjectCommand } = require('@aws-sdk/client-s3');
const s3Client = S3Client({ region: 'us-east-2'});
const params = {
Bucket: '<bucket>',
Key: '1234567890.jpg',
ACL: 'private',
ContentType: 'image/jpg',
// Body: '<base64 encoded image content>'
};
const command = new PutObjectCommand(params);
// await s3Client.send(command); // works fine
const signedUrl = await getSignedUrl(s3Client, command); // generated signed url fails to upload image
Run Code Online (Sandbox Code Playgroud)
当我尝试使用生成的预签名 …
我试图了解一些关于 java 解释对象类型的方式。
这就是我的意思:
@Test
void checkObj() {
// Output: INFO: Obj true is of type class java.lang.Boolean
Object obj = true;
log.info("Obj {} is of type {}", new Object[] {obj, obj.getClass()});
}
Run Code Online (Sandbox Code Playgroud)
obj已经被声明为 typeObject并且我们知道它true是 type Boolean,对吧?所以当我们赋值true给obj为什么会java告诉我们这obj是类型Boolean而不是告诉我们它是类型Object?
我看了两者的源代码实现Boolean和Object。Object不是接口并且Boolean不扩展或实现Object因此多态性是不可能的那么两者之间的链接在哪里?
的源代码是这样Boolean开始的:
public final class Boolean implements Serializable, Comparable<Boolean> { // ...
Run Code Online (Sandbox Code Playgroud)
的源代码是这样 …