harryk
10/02/2024, 12:37 PMharryk
10/02/2024, 12:45 PMEvil Ware
10/02/2024, 2:17 PMEvil Ware
10/02/2024, 2:18 PM<cfset azureStorageAccount = "your_storage_account">
<cfset azureStorageKey = "your_storage_key">
<cfset containerName = "your_container_name">
<cfset blobName = "your_blob_name">
<cfset filePath = "path_to_your_file">
<cfhttp method="PUT" url="https://#azureStorageAccount#.blob.core.windows.net/#containerName#/#blobName#"
result="httpResponse">
<cfhttpparam type="header" name="x-ms-blob-type" value="BlockBlob">
<cfhttpparam type="header" name="Authorization" value="SharedKey #azureStorageAccount#:#azureStorageKey#">
<cfhttpparam type="file" file="#filePath#">
</cfhttp>
<cfoutput>#httpResponse.StatusCode#</cfoutput>harryk
10/02/2024, 3:25 PMbdw429s
10/02/2024, 5:36 PMbdw429s
10/02/2024, 5:36 PMbdw429s
10/02/2024, 5:37 PMharryk
10/04/2024, 2:10 PMharryk
10/04/2024, 3:00 PM<cfscript>
// Azure Storage Account Details
storageAccount = "your_storage_account_name";
storageKey = "your_storage_account_key";
containerName = "your_container_name";
blobName = "your_blob_name";
filePath = "path_to_your_local_file";
// Generate Authorization Header
private string function generateAuthorizationHeader(required string method, required string storageAccount, required string containerName, required string blobName, required string content = "", required string contentType = "application/octet-stream") {
var x_ms_date = DateFormat(Now(), 'ddd, dd mmm yyyy') & " " & TimeFormat(Now(), 'HH:mm:ss') & " GMT";
var canonicalizedHeaders = "x-ms-blob-type:BlockBlob";
var canonicalizedResource = "/" & storageAccount & "/" & containerName & "/" & blobName;
var stringToSign = method & "\n\n\n" & Len(content) & "\n\n" & contentType & "\n\n\n\n\n\n\n" & x_ms_date & "\n" & canonicalizedHeaders & "\n" & canonicalizedResource;
// Java-based HMACSHA256 hashing
var mac = createObject("java", "javax.crypto.Mac").getInstance("HmacSHA256");
var key = createObject("java", "javax.crypto.spec.SecretKeySpec").init(storageKey.getBytes("UTF-8"), "HmacSHA256");
mac.init(key);
var signatureBytes = mac.doFinal(stringToSign.getBytes("UTF-8"));
var signature = toBase64(signatureBytes);
return "SharedKey " & storageAccount & ":" & signature;
}
// Read file content
fileContent = FileRead(filePath);
// Upload Blob Function
function uploadBlob(required string storageAccount, required string containerName, required string blobName, required string fileContent) {
var url = "https://" & storageAccount & ".<http://blob.core.windows.net/|blob.core.windows.net/>" & containerName & "/" & blobName;
var request = new http(url=url, method="PUT", charset="utf-8");
var x_ms_date = DateFormat(Now(), 'ddd, dd mmm yyyy') & " " & TimeFormat(Now(), 'HH:mm:ss') & " GMT";
var x_ms_version = "2024-10-10";
request.addParam(type="header", name="x-ms-version", value=" " & x_ms_version); // Include a space before the version
request.addParam(type="header", name="x-ms-date", value=x_ms_date);
request.addParam(type="header", name="Content-Type", value="application/octet-stream");
request.addParam(type="header", name="Authorization", value=generateAuthorizationHeader("PUT", storageAccount, containerName, blobName, fileContent, "application/octet-stream"));
request.body = fileContent;
var result = request.send().getPrefix();
// Check the status code in the response
if (result.statusCode == 201) {
writeOutput("File uploaded successfully to Azure Blob.");
} else {
writeOutput("File upload failed. Error: " & result.statusCode & " - " & result.fileContent);
}
}
// Call the uploadBlob function
uploadBlob(storageAccount, containerName, blobName, fileContent);
</cfscript>harryk
10/04/2024, 3:01 PMEvil Ware
10/04/2024, 3:18 PMharryk
10/05/2024, 9:27 AM