【问题标题】:error connecting to blob storage连接到 Blob 存储时出错
【发布时间】:2014-09-02 00:29:35
【问题描述】:

我已经尝试过这个链接,但它仍然不起作用我不知道为什么 CloudStorageAccount 帐户 =new CloudStorageAccount(st, true); CloudBlobClient blobClient = account.createCloudBlobClient(); CloudBlobContainer 容器 = blobClient.getContainerReference(uid); 容器.createIfNotExists(); BlobContainerPermissions containerPermissions = new BlobContainerPermissions(); containerPermissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); container.uploadPermissions(containerPermissions); File fl = new File(fileUri.getPath());

            CloudBlockBlob blob1 =container.getBlockBlobReference(fl.getName());
            blob1.upload(new FileInputStream(fl), fl.length());

在尝试将图像上传到 blob 存储时,我一直无法连接到 ****.blob.core.windows.net

try {
    //Get the rocket data
    FileInputStream fis = new FileInputStream(mFilePath);
    int bytesRead = 0;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] b = new byte[1024];
    while ((bytesRead = fis.read(b)) != -1) {
        bos.write(b, 0, bytesRead);
    }
    byte[] bytes = bos.toByteArray();
    fis.close();

    // Post our rocket data (byte array) to the server
    URL url = new URL(mBlobUrl.replace("\"", ""));
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setDoOutput(true);
    urlConnection.setRequestMethod("PUT");

    urlConnection.addRequestProperty("Content-Type", "image/jpeg");

    // Write image data to server
    DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
    wr.write(bytes);
    wr.flush();``
    wr.close();
    int response = urlConnection.getResponseCode();

    //If we successfully uploaded, return true
    if (response == 201
            && urlConnection.getResponseMessage().equals("Created")) {
        return true;
    }
} catch (Exception ex) {
    Log.e(TAG, ex.getMessage());
}

(@刚刚格式化为代码以正确显示)

【问题讨论】:

    标签: java android azure azure-storage


    【解决方案1】:

    您不能像在代码中那样直接将文件上传到 Blob 存储。默认情况下,对 Blob 存储的访问仅限于帐户所有者,您必须使用 Azure 存储 REST API 才能与之交互。本质上,您必须调用 Put Blob 操作才能将文件上传到 Blob 存储中。

    有关使用适用于 Azure 的 Java SDK 上传文件的示例,请参见此示例:http://azure.microsoft.com/en-us/documentation/articles/storage-java-how-to-use-blob-storage/#UploadBlob

    【讨论】:

    • tnx @Guarav 但我知道我参考他们网站上的示例项目编写了该代码
    • 可以分享链接吗?
    • 我回答它没用这里试过是链接azure.microsoft.com/en-us/downloads
    【解决方案2】:

    示例代码如下所示:

    CloudStorageAccount account = new CloudStorageAccount(st, true); 
    CloudBlobClient blobClient = account.createCloudBlobClient(); 
    CloudBlobContainer container = blobClient.getContainerReference(uid);
    container.createIfNotExists();
    CloudBlockBlob blob = container.getBlockBlobReference("filename");
    blob.uploadFromStream(new FileInputStream(mFilePath));
    

    在您的代码的以下语句中,fl.getName() 返回什么。请确保它不包含任何无效字符,如'/'、'\'等。

    CloudBlockBlob blob1 =container.getBlockBlobReference(fl.getName());
    

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2015-05-29
      • 2019-06-12
      • 2022-08-03
      • 2021-07-11
      • 2017-09-17
      • 1970-01-01
      • 2022-12-11
      • 2016-02-18
      相关资源
      最近更新 更多