Переименование файла с помощью Dropzone при загрузке в Azure методом PUT не работает - PullRequest
0 голосов
/ 22 марта 2019

Я использую 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);
    };

Заранее спасибо за любую помощь / предложения ...

...