版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云OSS Java SDK中,如果已经有了一个第三方授权加密后的上传链接(预签名URL),你不需要直接使用OSSClient进行上传操作。预签名URL允许你在没有直接提供AccessKey和SecretKey的情况下,通过HTTP PUT请求直接上传文件到指定的OSS路径。这意味着你可以利用Java的网络库(如HttpURLConnection或者第三方库如OkHttp)来执行这个PUT请求。
以下是一个简单的示例,展示如何使用Java原生的HttpURLConnection来通过预签名URL上传文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class UploadWithPresignedUrl {
public static void main(String[] args) throws IOException {
String presignedUrlStr = "http://watch-portal.oss-cn-beijing.aliyuncs.com/data/11/1151b7c82780dec9e24ce903047577db.jpg?Expires=1539165607&OSSAccessKeyId=yourAccessKeyId&Signature=yourSignature"; // 替换为你的预签名URL
URL url = new URL(presignedUrlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
File file = new File("path_to_your_local_file"); // 替换为你要上传的本地文件路径
try (InputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
connection.getOutputStream().write(buffer, 0, bytesRead);
}
}
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println("File uploaded successfully.");
} else {
System.out.println("Upload failed. Response Code: " + responseCode);
}
connection.disconnect();
}
}
这段代码首先创建了一个到预签名URL的连接,并设置请求方法为PUT。然后,它读取本地文件的字节流并写入到连接的输出流中,完成文件上传。最后,根据响应码判断上传是否成功。
请确保替换presignedUrlStr
中的URL为你实际的预签名URL,并且替换file
变量对应的本地文件路径为你要上传的文件的实际路径。