Я использую React версию FineUploader в своем приложении для отправки файлов в хранилище BLOB-объектов Azure.

Убедившись, что файлы загружены, мне нужно сохранить их информацию в моей базе данных. Я не хочу регистрировать информацию о файлах в своей базе данных, если не знаю, что файлы находятся в моем хранилище BLOB-объектов. Вот информация, которую мне нужно захватить:

  • исходное имя файла
  • присвоено blobName или uuid
  • если можно, информация о размере файла тоже будет очень полезна, но это не обязательно

Если я правильно читаю документацию, blobProperties кажется мне подходящим местом для получения этой информации, но пока мне не удалось заставить это работать.

В blobProperties мне НЕ нужно вызывать мою базу данных, чтобы получить blobName. Подойдет простое значение GUID, которое я могу присвоить, или просто захватить uuid, которое назначает FineUploader. Я просто хочу получить нужную мне информацию и сохранить ее в моем магазине Redux.

Вот где мне нужна помощь:

const uploader = new FineUploaderAzure({
    options: {
        blobProperties: function(id) {

            // How do I get original file name here?
            // If I can, I'd like to get file size as well.
            // Once I know file's original name as well as the blobName assigned to it, I'll store them in my Redux store
        },
        cors: {
            expected: true,
            sendCredentials: false
        },
        signature: {
            endpoint: 'http://myapp.com/api/getsas'
        },
        request: {
            endpoint: 'https://myaccount.blob.core.windows.net/my-container'
        },
        callbacks: {
            onComplete: function (id, name, responseJSON, xhr) {

                myFunction(responseJSON);

            }
        }
    }
})

const myFunction = (responseJSON) => {

    // If upload is successful, I'll get file details from Redux store and call my action creators
    // to trigger an API call to my backend so that I can register uploaded files in my database.
}

Я был бы признателен за советы о том, как получить информацию о файле, который я ищу.

2
Sam 31 Дек 2017 в 00:01

1 ответ

Лучший ответ

С помощью аргумента функции onComplete id вы можете получить все с помощью методов, предоставляемых fineUploader, например

Вы можете называть их так в своей функции

onComplete: function (id, name, responseJSON, xhr) {
                uploader.methods.getName(id);
                uploader.methods.getSize(id);
                uploader.methods.getBlobName(id);
                myFunction(responseJSON);
            }
1
Zeromus 2 Янв 2018 в 08:34