So che è disponibile una libreria per caricare il file utilizzando Archiviazione di Azure. Mi riferisco allo this per lo stesso.Carica file con Archiviazione di Azure utilizzando SAS (firma di accesso condiviso)
Tuttavia, non hanno fornito informazioni su come utilizzare SAS con quello. Ho il nome dell'account e l'URL di sas per l'accesso e caricare il file lì. Ma non so come usarlo per caricare il file.
Se uso la libreria sopra menzionata, mi mostra una stringa di connessione di archiviazione invalida perché non sto passando la chiave in essa (che non è richiesta con sas). Quindi sono poco confuso su Come posso caricare il file.
Mi riferisco alla documentazione this anche per il caricamento di file tramite sas. ma non ottenere i passaggi corretti per farlo. Hanno fatto demo per la loro app di Windows. Voglio averlo in Android con l'uso di sas.
Qualcuno può aiutarmi in questo?
UPDATE
devo provare con il codice di seguito con riferimento alla console app made by Azure per controllare e accedere SAS.
try {
//Try performing container operations with the SAS provided.
//Return a reference to the container using the SAS URI.
//CloudBlockBlob blob = new CloudBlockBlob(new StorageUri(new URI(sas)));
String[] str = userId.split(":");
String blobUri = "https://myStorageAccountName.blob.core.windows.net/image/" + str[1] + "/story/" + storyId + "/image1.jpg" + sas.toString().replaceAll("\"","");
Log.d(TAG,"Result:: blobUrl 1 : "+blobUri);
CloudBlobContainer container = new CloudBlobContainer(new URI(blobUri));
Log.d(TAG,"Result:: blobUrl 2 : "+blobUri);
CloudBlockBlob blob = container.getBlockBlobReference("image1.jpg");
String filePath = postData.get(0).getUrl().toString();
/*File source = new File(getRealPathFromURI(getApplicationContext(),Uri.parse(filePath))); // File path
blob.upload(new FileInputStream(source), source.length());*/
Log.d(TAG,"Result:: blobUrl 3 : "+blobUri);
//blob.upload(new FileInputStream(source), source.length());
//blob.uploadText("Hello this is testing..."); // Upload text file
Log.d(TAG, "Result:: blobUrl 4 : " + blobUri);
Log.d(TAG, "Write operation succeeded for SAS " + sas);
response = "success";
//Console.WriteLine();
} catch (StorageException e) {
Log.d(TAG, "Write operation failed for SAS " + sas);
Log.d(TAG, "Additional error information: " + e.getMessage());
response = e.getMessage();
} catch (FileNotFoundException e) {
e.printStackTrace();
response = e.getMessage();
} catch (IOException e) {
e.printStackTrace();
response = e.getMessage();
} catch (URISyntaxException e) {
e.printStackTrace();
response = e.getMessage();
} catch (Exception e){
e.printStackTrace();
response = e.getMessage();
}
Ora, quando si invia il testo solo mi dice sotto l'errore
Server non è riuscito a autenticare la richiesta. Assicurati che il valore dell'intestazione di autorizzazione sia formato correttamente, inclusa la firma.
Ora, il mio requisito è quello di caricare il file di immagine. Quindi, quando ho decommentato il codice per caricare il file immagine, non mi sta dando alcun errore ma nemmeno il caricamento del file immagine. Non so cosa c'è di sbagliato qui. Qualcuno può aiutarmi qui.
Grazie.
Si prega di confermare sas nella domanda –
@subhashsingh cosa intendi con conferma sas nella mia domanda? Non capisco quello che stai dicendo. –
@subhashsingh puoi rispondere alla mia domanda? Non sto ottenendo il significato del tuo commento. –