2014-03-19 53 views
0

任何人都可以帮助我举例或示例?我需要在Blob存储如何使用此地API连接Azure云(blob存储)

我设法代码以下&放文件,

try { 
    CloudProvider provider = (CloudProvider) Class.forName("org.dasein.cloud.azure.Azure").newInstance(); 
    ProviderContext providerContext = new ProviderContext("DEV","West US"); 
    //providerContext.setStorage(""); 
    providerContext.setStorageAccountNumber("mypackages"); 
    providerContext.setStoragePublic("XXX".getBytes()); 
    providerContext.setEndpoint("http://XXX.blob.core.windows.net/"); 
    providerContext.setStorageX509Key("YYY".getBytes()); 
    provider.connect(providerContext, provider); 

    System.out.println("here "+provider.testContext()); 
} catch (InstantiationException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IllegalAccessException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (ClassNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

在上面的代码我得到NPE如下

org.dasein.cloud.InternalException: java.lang.NullPointerException 
    at org.dasein.cloud.azure.AzureX509.<init>(AzureX509.java:64) 
    at org.dasein.cloud.azure.AzureMethod.getClient(AzureMethod.java:386) 
    at org.dasein.cloud.azure.AzureMethod.getAsStream(AzureMethod.java:124) 
    at org.dasein.cloud.azure.Azure.testContext(Azure.java:258) 
    at com.gehcit.dasein.App.main(App.java:27) 
Caused by: java.lang.NullPointerException 
    at java.lang.String.<init>(Unknown Source) 
    at org.dasein.cloud.azure.AzureX509.<init>(AzureX509.java:58) 
    ... 4 more 
org.dasein.cloud.InternalException: java.lang.NullPointerException 
    at org.dasein.cloud.azure.AzureX509.<init>(AzureX509.java:64) 
    at org.dasein.cloud.azure.AzureMethod.getClient(AzureMethod.java:386) 
    at org.dasein.cloud.azure.AzureMethod.getAsStream(AzureMethod.java:124) 
    at org.dasein.cloud.azure.Azure.testContext(Azure.java:258) 
    at com.gehcit.dasein.App.main(App.java:27) 
Caused by: java.lang.NullPointerException 
    at java.lang.String.<init>(Unknown Source) 
    at org.dasein.cloud.azure.AzureX509.<init>(AzureX509.java:58) 
    ... 4 more 

回答

0

这对我的作品在执行:

public static final String storageConnectionString = 
    "DefaultEndpointsProtocol=http;" 
    + "AccountName=<Your accountname>;" 
    + "AccountKey=<Your key>"; 

public static synchronized String upLoadSelected(String containername, String path, String directory, String pathPartRemover) { 
    List<File> filListe = new ArrayList<>(); 
    if (storageConnectionString.isEmpty() != true) { 
     String respons = ""; 
     try { 

      CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString); 
      CloudBlobClient serviceClient = account.createCloudBlobClient(); 
      CloudBlobContainer container = null; 
      String source = "" + path; 
      container = serviceClient.getContainerReference("" + containername); 
      container.createIfNotExists(); 
      String temp = "" + directory; 
      filListe = listf(source); 
      for (File file : filListe) { 
       if (file.isDirectory() == true && file.getParentFile().getName().equalsIgnoreCase(temp) != true) { 
        temp = (temp + "\\" + file.getName()); 
       } 
       if (file.isDirectory() != true) { 
        CloudBlockBlob blob = container.getBlockBlobReference("" + file.getCanonicalPath().replace("" + pathPartRemover, "")); 
        File sourceFile = new File("" + file.getAbsolutePath()); 
     blob.upload(new FileInputStream(sourceFile), sourceFile.length()); 
       } 
      } 

     } catch (FileNotFoundException fileNotFoundException) { 
      respons = respons + "FileNotFoundException encountered: " + fileNotFoundException.getMessage(); 
     } catch (StorageException storageException) { 
      respons = respons + "StorageException encountered: " + storageException.getMessage(); 
     } catch (IOException e) { 
      respons = respons + "IOexception encountered: " + e.getMessage(); 
     } catch (URISyntaxException e) { 
      respons = respons + "URIexception encountered: " + e.getMessage(); 
     } catch (InvalidKeyException ex) { 
      respons = respons + "InvalidKeyException encountered: " + ex.getMessage(); 
     } 

     return respons; 
    } 
    return "No connection"; 
} 

public static synchronized List<File> listf(String directoryName) { 
    File directory = new File(directoryName); 
    List<File> resultList = new ArrayList<>(); 


    File[] fList = directory.listFiles(); 
    resultList.addAll(Arrays.asList(fList)); 
    for (File file : fList) { 
     if (file.isFile()) { 
     } else if (file.isDirectory()) { 
      resultList.addAll(listf(file.getAbsolutePath())); 
     } 
    } 
    return resultList; 
}