Beispiel #1
0
  public static void main(String[] args) throws IOException {

    OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    try {
      // createBuket("create-by-code", client);
      // UploadMethod.sendStr("create-by-code", "Hello OSS!", client);
      // UploadMethod.uploadFile("create-by-code", new File("c:/hello oss.txt"),
      // client);
      // UploadMethod.uploadFileProgress(bucketName, new File(
      // "E:/MOVE/Videos/神探夏洛克-恐怖的新娘/Sherlock Abominable Bride 2015 720p.mkv"),
      // client);
      // UploadMethod.createDir(bucketName, "新建文件夹", client);
      // UploadMethod.createDir(bucketName, "新建文件夹/a", client);
      // UploadMethod.uploadFile(bucketName, new File("c:/test.txt"),
      // "新建文件夹/a/", client);
      // DownloadMethod.readContent(bucketName, "Hello OSS!", client);
      // DownloadMethod.downloadFile(bucketName, client, "新建文件夹/a/test.txt");
      // OpratorMethod.listBucket(client);
      OpratorMethod.listObj(bucketName, client);
    } catch (Exception e) {
      System.err.println(e);
    } finally {
      client.shutdown();
    }
  }
 public static void main(String[] args) {
   OSSClient client = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY);
   String bucketName = OSSConfig.BUCKET_NAME;
   try {
     String location = client.getBucketLocation(bucketName);
     System.out.println(location);
   } catch (OSSException e) {
     e.printStackTrace();
   }
 }
  /**
   * 下载文件
   *
   * @author [email protected]
   * @param fileId
   * @return
   * @throws IOException
   */
  public FileInfo download(String fileId) throws IOException {
    logger.debug("download file from OSS--start");
    if (fileId == null || fileId.equals("")) {
      throw new IllegalArgumentException("fileId不能为null或者空字符串");
    }
    OSSClient client = this.getOSSClient();
    OSSObject ossObject = client.getObject(bucketName, fileId);
    FileInfo fileInfo = new FileInfo();
    InputStream is = ossObject.getObjectContent();
    byte[] content = IOUtils.readStreamAsByteArray(is);
    checkContent(content);
    ObjectMetadata objectMetadata = ossObject.getObjectMetadata();
    String fileName = objectMetadata.getUserMetadata().get("filename");
    fileInfo.setFileContent(content);
    fileInfo.setFileName(fileName);

    logger.debug("download file from OSS--end");
    return fileInfo;
  }
 public static void readContent(String bucketName, String key, OSSClient client)
     throws IOException {
   BufferedReader br = null;
   try {
     OSSObject objec = client.getObject(bucketName, key);
     br = new BufferedReader(new InputStreamReader(objec.getObjectContent()));
     String line = br.readLine();
     while (line != null) {
       System.out.println(line);
       line = br.readLine();
     }
     System.out.println("读完啦!");
   } catch (Exception e) {
     System.err.println(e);
   } finally {
     br.close();
   }
 }
  public static void main(String[] args) throws IOException {
    /*
     * Constructs a client instance with your account for accessing OSS
     */
    OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    try {
      /*
       * Append an object from specfied input stream, keep in mind that
       * position should be set to zero at first time.
       */
      String content = "Thank you for using Aliyun Object Storage Service";
      InputStream instream = new ByteArrayInputStream(content.getBytes());
      Long firstPosition = 0L;
      System.out.println("Begin to append object at position(" + firstPosition + ")");
      AppendObjectResult appendObjectResult =
          client.appendObject(new AppendObjectRequest(bucketName, key, instream).withPosition(0L));
      System.out.println(
          "\tNext position="
              + appendObjectResult.getNextPosition()
              + ", CRC64="
              + appendObjectResult.getObjectCRC()
              + "\n");

      /*
       * Continue to append the object from specfied file descriptor at last position
       */
      Long nextPosition = appendObjectResult.getNextPosition();
      System.out.println("Continue to append object at last position(" + nextPosition + "):");
      appendObjectResult =
          client.appendObject(
              new AppendObjectRequest(bucketName, key, createTempFile())
                  .withPosition(nextPosition));
      System.out.println(
          "\tNext position="
              + appendObjectResult.getNextPosition()
              + ", CRC64="
              + appendObjectResult.getObjectCRC());

      /*
       * View object type of the appendable object
       */
      OSSObject object = client.getObject(bucketName, key);
      System.out.println("\tObject type=" + object.getObjectMetadata().getObjectType() + "\n");
      // Do not forget to close object input stream if not use it any more
      object.getObjectContent().close();

      /*
       * Delete the appendable object
       */
      System.out.println("Deleting an appendable object");
      client.deleteObject(bucketName, key);

    } catch (OSSException oe) {
      System.out.println(
          "Caught an OSSException, which means your request made it to OSS, "
              + "but was rejected with an error response for some reason.");
      System.out.println("Error Message: " + oe.getErrorCode());
      System.out.println("Error Code:       " + oe.getErrorCode());
      System.out.println("Request ID:      " + oe.getRequestId());
      System.out.println("Host ID:           " + oe.getHostId());
    } catch (ClientException ce) {
      System.out.println(
          "Caught an ClientException, which means the client encountered "
              + "a serious internal problem while trying to communicate with OSS, "
              + "such as not being able to access the network.");
      System.out.println("Error Message: " + ce.getMessage());
    } finally {
      /*
       * Do not forget to shut down the client finally to release all allocated resources.
       */
      client.shutdown();
    }
  }
  /**
   * 上传文件
   *
   * @author [email protected]
   * @param filename:文件名称
   * @param content:文件的内容,用字节数组存储
   * @return 文件在OSS中的唯一标识,即fileId
   */
  public String upload(String filename, byte[] content) {
    logger.debug("upload file to OSS--start");
    if (content == null || content.length == 0) {
      throw new IllegalArgumentException("文件内容不能为空");
    }
    OSSClient client = this.getOSSClient();
    String key = UUIDUtils.getUUID();

    ObjectMetadata meta = new ObjectMetadata();
    Map<String, String> userMetadata = new HashMap<String, String>();
    if (filename == null || filename.equals("")) {
      filename = key;
    }
    logger.debug("filename:" + filename);
    userMetadata.put("filename", filename);
    meta.setUserMetadata(userMetadata);
    // 开始Multipart Upload
    InitiateMultipartUploadRequest initiateMultipartUploadRequest =
        new InitiateMultipartUploadRequest(bucketName, key, meta);
    InitiateMultipartUploadResult initiateMultipartUploadResult =
        client.initiateMultipartUpload(initiateMultipartUploadRequest);

    logger.debug("UploadId: " + initiateMultipartUploadResult.getUploadId());

    // 设置每块为 5M
    final int partSize = 1024 * 1024 * 5;
    // 计算分块数目
    int partCount = (int) (content.length / partSize);
    if (content.length % partSize != 0) {
      partCount++;
    }
    // 新建一个List保存每个分块上传后的ETag和PartNumber
    List<PartETag> partETags = new ArrayList<PartETag>();
    for (int i = 0; i < partCount; i++) {
      InputStream partIs = new ByteArrayInputStream(content);
      // 计算每个分块的大小
      int size =
          partSize < content.length - i * partSize ? partSize : content.length - i * partSize;
      byte[] copy = new byte[size];
      System.arraycopy(content, partSize * i, copy, 0, size);
      // 创建UploadPartRequest,上传分块
      UploadPartRequest uploadPartRequest = new UploadPartRequest();
      uploadPartRequest.setBucketName(bucketName);
      uploadPartRequest.setKey(key);
      uploadPartRequest.setUploadId(initiateMultipartUploadResult.getUploadId());
      uploadPartRequest.setInputStream(partIs);
      uploadPartRequest.setPartSize(size);
      uploadPartRequest.setPartNumber(i + 1);
      UploadPartResult uploadPartResult = client.uploadPart(uploadPartRequest);
      // 将返回的PartETag保存到List中
      partETags.add(uploadPartResult.getPartETag());
    }
    CompleteMultipartUploadRequest completeMultipartUploadRequest =
        new CompleteMultipartUploadRequest(
            bucketName, key, initiateMultipartUploadResult.getUploadId(), partETags);
    // 完成分块上传
    CompleteMultipartUploadResult completeMultipartUploadResult =
        client.completeMultipartUpload(completeMultipartUploadRequest);
    logger.debug("ETag:" + completeMultipartUploadResult.getETag());
    logger.debug("文件的key:" + key);
    logger.debug("upload file to OSS--end");
    return key;
  }
 public static void downloadFile(String bucketName, OSSClient client, String key) {
   GetObjectRequest request = new GetObjectRequest(bucketName, key);
   client.getObject(request, new File("c:/test_down.txt"));
 }