Wednesday, January 29, 2025

X++ Upload and Download file - D365 FO

class RetailSharedParameters_Eventhandlers
{
    /// <summary>
    /// Event handler for the "UploadFile" button click event.
    /// </summary>
    /// <param name="sender">The form control that triggered the event.</param>
    /// <param name="e">Event arguments.</param>
    [FormControlEventHandler(formControlStr(RetailSharedParameters, UploadFile), FormControlEventType::Clicked)]
    public static void UploadFile_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        // Get the button that triggered the event
        FormButtonControl callerButton = sender as FormButtonControl;
        
        // Get the form run instance
        FormRun form = callerButton.formRun();
        
        // Get the data source for the RetailSharedParameters table
        FormDataSource RetailSharedParameters_ds = form.dataSource(formDataSourceStr(RetailSharedParameters, RetailSharedParameters)) as FormDataSource;
        
        // Get the current record from the data source
        RetailSharedParameters RetailSharedParameters = RetailSharedParameters_ds.cursor();

        // Prompt the user to upload a file
        FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult;
        
        // Check if the file upload was successful
        if (result && result.getUploadStatus())
        {
            // Store the file name and download URL in the table
            RetailSharedParameters.FileName = result.getFileName();
            RetailSharedParameters.SoundFile = result.getDownloadUrl();
            
            // Save the changes to the database
            RetailSharedParameters.write();
        }
    }

    /// <summary>
    /// Event handler for the "DownloadFile" button click event.
    /// </summary>
    /// <param name="sender">The form control that triggered the event.</param>
    /// <param name="e">Event arguments.</param>
    [FormControlEventHandler(formControlStr(RetailSharedParameters, DownloadFile), FormControlEventType::Clicked)]
    public static void DownloadFile_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        // Variable to store the file URL
        str fileUrl = '';
        
        // Get the button that triggered the event
        FormButtonControl callerButton = sender as FormButtonControl;
        
        // Get the form run instance
        FormRun form = callerButton.formRun();
        
        // Get the data source for the RetailSharedParameters table
        FormDataSource RetailSharedParameters_ds = form.dataSource(formDataSourceStr(RetailSharedParameters, RetailSharedParameters)) as FormDataSource;
        
        // Get the current record from the data source
        RetailSharedParameters RetailSharedParameters = RetailSharedParameters_ds.cursor();
        
        // Retrieve the stored file URL
        fileUrl = RetailSharedParameters.SoundFile;
        
        // Open the file URL in a browser
        if (fileUrl)
        {
            new Browser().navigate(fileUrl);
        }
        else
        {
            // Notify the user if no file URL is found
            warning("No file URL found.");
        }
    }
}

No comments:

Post a Comment