Updated on 2024-06-21 GMT+08:00

Performing a File-Based Upload

If you have any questions during development, post them on the Issues page of GitHub. For details about parameters and usage of each API, see the .

File-based upload uses local files as the data source of objects. Sample code is as follows:

// Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables ACCESS_KEY_ID and SECRET_ACCESS_KEY_ID.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
String endPoint = "https://your-endpoint";
// Create an ObsClient instance.
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
try {
    // Upload a file.
    // localfile indicates the path of the local file to be uploaded, which must include the file name.
    PutObjectRequest request = new PutObjectRequest();
    request.setBucketName("examplebucket");
    request.setObjectKey("objectkey");
    request.setFile(new File("localfile"));
    obsClient.putObject(request);
    System.out.println("putObject successfully");
} catch (ObsException e) {
    System.out.println("putObject 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("putObject failed");
    // Print other error details.
    e.printStackTrace();
}
  • The file to be uploaded cannot exceed 5 GB.
  • Due to HTTP coding restrictions, non-ASCII characters cannot be sent. If your request headers contain full-width characters, the SDK will URL encode these characters before sending the request. When you use a browser to access the object metadata, the browser automatically decodes the data.
  • If you do not need the SDK to decode for you, call PutObjectRequest.setIsEncodeHeaders(false) to disable auto encoding. To use auto encoding, you need to install the latest version of the SDK.