连接到blob存储的错误

时间:2014-09-02 00:29:36

标签: java android azure azure-storage

我已尝试过这个链接但是它仍然无法正常工作我不知道为什么     CloudStorageAccount account = new CloudStorageAccount(st,true);                 CloudBlobClient blobClient = account.createCloudBlobClient();                 CloudBlobContainer container = blobClient.getContainerReference(uid);                 container.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());
}

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

2 个答案:

答案 0 :(得分:0)

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

请参阅此示例以使用Java SDK for Azure上载文件:http://azure.microsoft.com/en-us/documentation/articles/storage-java-how-to-use-blob-storage/#UploadBlob

答案 1 :(得分:0)

示例代码如下所示:

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());