Creating a Signed URL for Downloading a Processed Image (SDK for Java)
Function
This API processes images in a stable, secure, efficient, easy, and cost-effective manner. You can pass the parameters for clipping, resizing, watermarking, converting the format of, or performing other operations on images to generate a signed URL.
If you have any questions during development, post them on the Issues page of GitHub.
Restrictions
- To download an object, you must be the bucket owner or have the required permission (obs:object:GetObject in IAM or GetObject in a bucket policy). For details, see Introduction to OBS Access Control, IAM Custom Policies, and Configuring an Object Policy.
- The mapping between OBS regions and endpoints must comply with what is listed in Regions and Endpoints.
- All image processing operations do not affect the original image.
- Archive storage does not support image processing.
- The processed image is directly returned to the browser for display. It is not stored in OBS, does not occupy storage space, and does not incur storage charges.
Method
obsClient.createTemporarySignature(TemporarySignatureRequest request)
Request Parameters
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
request |
Yes |
Explanation: Request parameters for creating a signed URL. For details, see Table 2. |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
bucketName |
String |
No |
Explanation: Bucket name. Restrictions:
Default value: None |
objectKey |
String |
No |
Explanation: Object name. An object is uniquely identified by an object name in a bucket. An object name is a complete path that does not contain the bucket name. For example, if the address for accessing the object is examplebucket.obs.ap-southeast-1.myhuaweicloud.com/folder/test.txt, the object name is folder/test.txt. Value range: The value must contain 1 to 1,024 characters. Default value: None |
specialParam |
No |
Explanation: Special parameters that may be used in the request. For details, see Table 3. |
|
method |
Yes |
Explanation: HTTP method. For details, see Table 3. |
|
headers |
Map<String, String> |
No |
Explanation: HTTP response header list, composed of tuples. In a tuple, the String key and value indicate the name and value of the header respectively. Default value: None |
queryParams |
Map<String, Object> |
No |
Explanation: Query parameters in the request. In Map<String, Object>, String indicates the key of query parameter in the request, and Object indicates the value of the query parameter. Default value: None |
expires |
long |
Yes |
Explanation: Expiration time of the object. The calculation starts from the time when the object was last modified. Once the object expires, it is automatically deleted. Restrictions: This parameter can be configured only when uploading the object. It cannot be modified by calling a metadata modification API. Value range: An integer greater than 0, in days. Default value: None |
requestDate |
Date |
Yes |
Explanation: Time when a request is initiated. Default value: None |
Operation |
HTTP Request Method (Value in OBS SDK for Java) |
Special Operator (Value in OBS SDK for Java) |
Bucket Name Required (Yes/No) |
Object Name Required (Yes/No) |
---|---|---|---|---|
Create Bucket |
HttpMethodEnum.PUT |
N/A |
Yes |
No |
List Buckets |
HttpMethodEnum.GET |
N/A |
No |
No |
Delete Bucket |
HttpMethodEnum.DELETE |
N/A |
Yes |
No |
List Objects |
HttpMethodEnum.GET |
N/A |
Yes |
No |
List Object Versions |
HttpMethodEnum.GET |
SpecialParamEnum.VERSIONS |
Yes |
No |
List Multipart Uploads |
HttpMethodEnum.GET |
SpecialParamEnum.UPLOADS |
Yes |
No |
Get Bucket Metadata |
HttpMethodEnum.HEAD |
N/A |
Yes |
No |
Get Bucket Location |
HttpMethodEnum.GET |
SpecialParamEnum.LOCATION |
Yes |
No |
Get Bucket Storageinfo |
HttpMethodEnum.GET |
SpecialParamEnum.STORAGEINFO |
Yes |
No |
Set Bucket Quota |
HttpMethodEnum.PUT |
SpecialParamEnum.QUOTA |
Yes |
No |
Get Bucket Quota |
HttpMethodEnum.GET |
SpecialParamEnum.QUOTA |
Yes |
No |
Set Bucket Storage Policy |
HttpMethodEnum.PUT |
SpecialParamEnum.STORAGEPOLICY |
Yes |
No |
Get Bucket Storage Policy |
HttpMethodEnum.GET |
SpecialParamEnum.STORAGEPOLICY |
Yes |
No |
Set Bucket ACL |
HttpMethodEnum.PUT |
SpecialParamEnum.ACL |
Yes |
No |
Get Bucket ACL |
HttpMethodEnum.GET |
SpecialParamEnum.ACL |
Yes |
No |
Set Bucket Logging |
HttpMethodEnum.PUT |
SpecialParamEnum.LOGGING |
Yes |
No |
Get Bucket Logging |
HttpMethodEnum.GET |
SpecialParamEnum.LOGGING |
Yes |
No |
Set Bucket Policy |
HttpMethodEnum.PUT |
SpecialParamEnum.POLICY |
Yes |
No |
Get Bucket Policy |
HttpMethodEnum.GET |
SpecialParamEnum.POLICY |
Yes |
No |
Delete Bucket Policy |
HttpMethodEnum.DELETE |
SpecialParamEnum.POLICY |
Yes |
No |
Set Lifecycle Rule |
HttpMethodEnum.PUT |
SpecialParamEnum.LIFECYCLE |
Yes |
No |
Get Lifecycle Rule |
HttpMethodEnum.GET |
SpecialParamEnum.LIFECYCLE |
Yes |
No |
Delete Lifecycle Rule |
HttpMethodEnum.DELETE |
SpecialParamEnum.LIFECYCLE |
Yes |
No |
Set Website Hosting |
HttpMethodEnum.PUT |
SpecialParamEnum.WEBSITE |
Yes |
No |
Get Website Hosting |
HttpMethodEnum.GET |
SpecialParamEnum.WEBSITE |
Yes |
No |
Delete Website Hosting |
HttpMethodEnum.DELETE |
SpecialParamEnum.WEBSITE |
Yes |
No |
Set Bucket Versioning |
HttpMethodEnum.PUT |
SpecialParamEnum.VERSIONING |
Yes |
No |
Get Bucket Versioning |
HttpMethodEnum.GET |
SpecialParamEnum.VERSIONING |
Yes |
No |
Set CORS Rule |
HttpMethodEnum.PUT |
SpecialParamEnum.CORS |
Yes |
No |
Get CORS Rule |
HttpMethodEnum.GET |
SpecialParamEnum.CORS |
Yes |
No |
Delete CORS Rule |
HttpMethodEnum.DELETE |
SpecialParamEnum.CORS |
Yes |
No |
Set Bucket Tagging |
HttpMethodEnum.PUT |
SpecialParamEnum.TAGGING |
Yes |
No |
Get Bucket Tagging |
HttpMethodEnum.GET |
SpecialParamEnum.TAGGING |
Yes |
No |
Delete Bucket Tagging |
HttpMethodEnum.DELETE |
SpecialParamEnum.TAGGING |
Yes |
No |
Upload Object |
HttpMethodEnum.PUT |
N/A |
Yes |
Yes |
Append Object |
HttpMethodEnum.POST |
SpecialParamEnum.APPEND |
Yes |
Yes |
Get Object |
HttpMethodEnum.GET |
N/A |
Yes |
Yes |
Copy Object |
HttpMethodEnum.PUT |
N/A |
Yes |
Yes |
Delete Object |
HttpMethodEnum.DELETE |
N/A |
Yes |
Yes |
Delete Objects |
HttpMethodEnum.POST |
SpecialParamEnum.DELETE |
Yes |
Yes |
Get Object Metadata |
HttpMethodEnum.HEAD |
N/A |
Yes |
Yes |
Set Object ACL |
HttpMethodEnum.PUT |
SpecialParamEnum.ACL |
Yes |
Yes |
Get Object ACL |
HttpMethodEnum.GET |
SpecialParamEnum.ACL |
Yes |
Yes |
Initiate Multipart Upload |
HttpMethodEnum.POST |
SpecialParamEnum.UPLOADS |
Yes |
Yes |
Upload Part |
HttpMethodEnum.PUT |
N/A |
Yes |
Yes |
Copy Part |
HttpMethodEnum.PUT |
N/A |
Yes |
Yes |
List Parts |
HttpMethodEnum.GET |
N/A |
Yes |
Yes |
Assemble Parts |
HttpMethodEnum.POST |
N/A |
Yes |
Yes |
Delete Multipart Upload |
HttpMethodEnum.DELETE |
N/A |
Yes |
Yes |
Restore Archive Objects |
HttpMethodEnum.POST |
SpecialParamEnum.RESTORE |
Yes |
Yes |
Responses
Parameter |
Type |
Description |
---|---|---|
signedUrl |
String |
Explanation: The signed URL. Default value: None |
actualSignedRequestHeaders |
Map<String, String> |
Explanation: Actual headers in the request initiated using the signed URL. Default value: None |
Code Examples
This example creates a signed URL for downloading a resized and rotated image objectname.jpg from bucket examplebucket.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.HttpMethodEnum; import com.obs.services.model.TemporarySignatureRequest; import com.obs.services.model.TemporarySignatureResponse; import java.util.HashMap; import java.util.Map; public class GetObject009 { public static void main(String[] args) { // Obtain an AK/SK pair using environment variables or import the AK/SK pair in other ways. Using hard coding may result in leakage. // Obtain an AK/SK pair on the management console. String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // (Optional) If you are using a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. // Obtain an AK/SK pair and a security token using environment variables or import them in other ways. // String securityToken = System.getenv("SECURITY_TOKEN"); // Enter the endpoint corresponding to the bucket. CN-Hong Kong is used here as an example. Replace it with the one in your actual situation. String endPoint = "https://obs.ap-southeast-1.myhuaweicloud.com"; // Obtain an endpoint using environment variables or import it in other ways. //String endPoint = System.getenv("ENDPOINT"); // Create an ObsClient instance. // Use the permanent AK/SK pair to initialize the client. ObsClient obsClient = new ObsClient(ak, sk,endPoint); // Use the temporary AK/SK pair and security token to initialize the client. // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // Create a signed URL for downloading a processed image. long expireSeconds = 3600L; TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds); request.setBucketName("examplebucket"); request.setObjectKey("objectname.jpg"); // Set image processing parameters to resize and rotate the images in the predefined sequence. Map<String, Object> queryParams = new HashMap<String, Object>(); queryParams.put("x-image-process", "image/resize,m_fixed,w_100,h_100/rotate,90"); request.setQueryParams(queryParams); // Generate the signed URL. TemporarySignatureResponse response = obsClient.createTemporarySignature(request); System.out.println("getSignedUrl successfully"); System.out.println(response.getSignedUrl()); } catch (ObsException e) { System.out.println("getSignedUrl failed"); // Request failed. Print the HTTP status code. System.out.println("HTTP Code:" + e.getResponseCode()); // Request failed. Print the server-side error code. System.out.println("Error Code:" + e.getErrorCode()); // Request failed. Print the error details. System.out.println("Error Message:" + e.getErrorMessage()); // Request failed. Print the request ID. System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("getSignedUrl failed"); // Print other error information. e.printStackTrace(); } } } |
Helpful Links
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot