Formulierverzendingen opslaan in Azure Storage

Dit artikel laat zien hoe u REST-oproepen kunt maken om verzonden AEM Forms-gegevens op te slaan in Azure Storage.
Als u verzonden formuliergegevens wilt opslaan in Azure Storage, moet u de volgende stappen uitvoeren.

NOTE
De code in dit artikel werkt niet met op kerncomponenten gebaseerde adaptieve formulieren. ​ het gelijkwaardige artikel voor kern op component gebaseerde adaptieve vorm is hier beschikbaar ​

Azure Storage-account maken

​ Login aan uw Azure portalaccount en creeer een opslagrekening ​. Geef uw opslagaccount een betekenisvolle naam, klik op Revisie en klik vervolgens op Maken. Hiermee maakt u uw opslagaccount met alle standaardwaarden. In het kader van dit artikel hebben we onze opslagaccount aemformstutorial genoemd.

Container maken

Het volgende wat we moeten doen is een container maken om de gegevens van formulierverzendingen op te slaan.
Klik op de pagina met opslagaccounts op de menuoptie Containers aan de linkerkant en maak een container met de naam formssubmissions . Zorg ervoor dat het openbare toegangsniveau aan privé wordt geplaatst
container

SAS maken op de container

Wij zullen ons van de Gedeelde Handtekening van de Toegang of SAS Methode van vergunning maken om met de Azure container van de Opslag in wisselwerking te staan.
Navigeer naar de container in de opslagaccount, klik op de ellips en selecteer de optie Generate SAS (SAS genereren), zoals weergegeven in de schermafbeelding
sas-on-container
Zorg ervoor dat u de juiste machtigingen en de juiste einddatum opgeeft, zoals in de onderstaande schermafbeelding wordt weergegeven, en klik op SAS-token en URL genereren. Kopieer de Blob SAS-token en Blob SAS url. Wij zullen deze twee waarden gebruiken om onze HTTP- vraag te maken
delen-toegang-sleutels

De BLOB SAS-token en opslag-URI opgeven

Om de code generischer te maken, kunnen de twee eigenschappen worden gevormd gebruikend de configuratie OSGi zoals hieronder getoond. aemformstutorial is de naam van de opslagrekening, formsubmission is de container waarin de gegevens zullen worden opgeslagen.
Zorg dat / aan het einde van de opslaguri staat en dat het SAS-token begint met?
osgi-configuratie

PUT-aanvraag maken

De volgende stap bestaat uit het maken van een PUT-aanvraag om de ingediende formuliergegevens op te slaan in Azure Storage. Elke formulierverzending moet worden geïdentificeerd met een unieke BLOB-id. De unieke BLOB-id wordt gewoonlijk in uw code gemaakt en ingevoegd in de URL van de PUT-aanvraag.
Hier volgt de gedeeltelijke URL van het PUT-verzoek. De aemformstutorial is de naam van de opslagaccount, de ingevulde gegevens zijn de container waarin de gegevens met een unieke BLOB-id worden opgeslagen. De rest van de URL blijft ongewijzigd.
https://aemformstutorial.blob.core.windows.net/formsubmissions/blobid/sastoken
Hieronder vindt u een functie die wordt geschreven om de verzonden formuliergegevens op te slaan in Azure Storage met behulp van een PUT-aanvraag. Let op het gebruik van de containernaam en de uuid in de URL. U kunt een OSGi-service of een verkoopserver maken met de onderstaande voorbeeldcode en de formulierverzendingen opslaan in Azure Storage.

 public String saveFormDatainAzure(String formData) {
    log.debug("in SaveFormData!!!!!" + formData);
    String sasToken = azurePortalConfigurationService.getSASToken();
    String storageURI = azurePortalConfigurationService.getStorageURI();
    log.debug("The SAS Token is " + sasToken);
    log.debug("The Storage URL is " + storageURI);
    org.apache.http.impl.client.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    UUID uuid = UUID.randomUUID();
    String putRequestURL = storageURI + uuid.toString();
    putRequestURL = putRequestURL + sasToken;
    HttpPut httpPut = new HttpPut(putRequestURL);
    httpPut.addHeader("x-ms-blob-type", "BlockBlob");
    httpPut.addHeader("Content-Type", "text/plain");

    try {
        httpPut.setEntity(new StringEntity(formData));

        CloseableHttpResponse response = httpClient.execute(httpPut);
        log.debug("Response code " + response.getStatusLine().getStatusCode());
        if (response.getStatusLine().getStatusCode() == 201) {
            return uuid.toString();
        }
    } catch (IOException e) {
        log.error("Error: " + e.getMessage());
        throw new RuntimeException(e);
    }
    return null;

}

Opgeslagen gegevens in de container verifiëren

vorm-gegeven-in-container

De oplossing testen

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e