Я использую Dropzone для успешной загрузки файлов в Azure. Однако я хочу переименовать файлы, загруженные в Azure, но встроенная функция переименования файлов Dropzone явно не работает при загрузке с использованием метода PUT. Есть ли способ переименовать файлы и загрузить их в Azure на клиенте с помощью Dropzone или Javascript? Я использую последнюю версию Dropzone. Это мой код:
// Код Dropzone
Dropzone.autoDiscover = false;
var previewNode = document.querySelector("#template");
previewNode.id = "";
var previewTemplate = previewNode.parentNode.innerHTML;
previewNode.parentNode.removeChild(previewNode);
var myDropzone = new Dropzone(document.body, { // Make the whole body a dropzone
url: "the Azure target entered", // Set the url
method: "PUT",
headers: { "x-ms-blob-type": "BlockBlob" },
sending: (file, xhr) => {
const _send = xhr.send;
xhr.send = () => { _send.call(xhr, file) };
},
acceptedFiles: ".png,.jpg,.gif,.bmp,.jpeg",
thumbnailWidth: 50,
thumbnailHeight: 50,
//createImageThumbnails: true,
parallelUploads: 10,
previewTemplate: previewTemplate,
previewsContainer: "#previews", // Define the container to display the previews
maxFilesize: 100,
//resizeWidth: 200, // Resize the images uploaded to Azure...
renameFile: function (file) {
return new Date().getTime() + '_' + file.name; //totalFiles +
},
autoQueue: false,
clickable: ".fileinput-button" // Define the element that should be used as click trigger to select files.
});
myDropzone.on("processing", (file) => {
myDropzone.options.headers["Content-Type"] = file.type;
myDropzone.options.url = getSubmitUrl(file.name); //`${action}/${file.name}${sas}`;
myDropzone.options.renameFile = function (file) {
return new Date().getTime() + '_' + file.name; //totalFiles +
};
});
function getSubmitUrl(fileName) {
var azureUrl = $("#submitUrl").val() + fileName + blobSas;
//alert('Azure Url: ' + azureUrl);
return azureUrl;
};
myDropzone.on("addedfile", function (file) {
// Hookup the start button
//file.previewElement.querySelector(".start").onclick = function () { myDropzone.enqueueFile(file); };
$(".start").prop('disabled', false);
$(".cancel").prop('disabled', false);
totalFiles++;
});
// Update the total progress bar
myDropzone.on("uploadprogress", function (progress) {
document.querySelector("#total-progress .progress-bar").style.width = progress + "%";
});
myDropzone.on("sending", function (file) {
// Show the total progress bar when upload starts
document.querySelector("#total-progress").style.opacity = "1";
// And disable the start button
//file.previewElement.querySelector(".start").setAttribute("disabled", "disabled");
});
myDropzone.on("complete", function (file) {
myDropzone.removeFile(file);
message.innerHTML = file.name + " successfully saved to Azure Cloud";
});
// Hide the total progress bar when nothing's uploading anymore
myDropzone.on("queuecomplete", function (progress) {
//document.querySelector("#total-progress").style.opacity = "0";
message.innerHTML = totalFiles + " file(s) successfully saved to Azure Cloud";
});
// Setup the buttons for all transfers
// The "add files" button doesn't need to be setup because the config
// `clickable` has already been specified.
document.querySelector("#actions .start").onclick = function () {
event.preventDefault();
myDropzone.enqueueFiles(myDropzone.getFilesWithStatus(Dropzone.ADDED));
};
document.querySelector("#actions .cancel").onclick = function () {
myDropzone.removeAllFiles(true);
};
Заранее спасибо за любую помощь / предложения ...