Есть ли способ получить qqfilename и qquuid, которые были переданы на сервер? - PullRequest
0 голосов
/ 04 февраля 2020

Прямо сейчас я использую response-fine-uploader для отправки фрагментированных файлов на сервер. Мне было интересно, смогу ли я получить имя файла и uuid, которые я загрузил, так как я нуждался в них в другой части компонента. Я верю, что они находятся в объекте загрузки, который я создал, но я не уверен, как их получить.

Я попытался проверить объект загрузчика, но, похоже, он там не отображается.

const uploader = new FineUploaderTraditional({
    options: {
        chunking: {
            enabled: true
        },
        deleteFile: {
            enabled: true,
            endpoint: `http://app.client.local/upload_delete`
        },
        request: {
            endpoint: `http://app.client.local/upload_chunk`
        },
        retry: {
            enableAuto: false
        }
    }
})

const isFileGone = status => {
    return [
        'canceled',
        'deleted',
    ].indexOf(status) >= 0
}

class SVFineUploaderComponent extends Component {
    constructor() {
        super()

        this.state = {
            submittedFiles: []
        }
    }

    componentDidMount() {
        uploader.on('statusChange', (id, oldStatus, newStatus) => {
            if (newStatus === 'submitted') {
                const submittedFiles = this.state.submittedFiles

                submittedFiles.push(id)
                this.setState({ submittedFiles })
            }
            else if (isFileGone(newStatus)) {
                const submittedFiles = this.state.submittedFiles
                const indexToRemove = submittedFiles.indexOf(id)

                submittedFiles.splice(indexToRemove, 1)
                this.setState({ submittedFiles })
            }
        })
    }

    renderFileInput = () => {
        return (
            <Container style={{border: "3px dotted"}}>
                <FileInput uploader={ uploader }>
                    <Dropzone uploader={ uploader }>
                        <span class="icon ion-upload">Attach or Drop Files Here</span>
                    </Dropzone>
                </FileInput>
            </Container>
        );
    }

    renderFile = () => {
        console.log(uploader)
        return (
            <Container style={{border: "3px dotted"}}>
                {
                    this.state.submittedFiles.map(id => (
                        <React.Fragment>
                            <Filename key={ id } id={ id } uploader={ uploader } />
                            <DeleteButton key={ id } id={ id } uploader={ uploader } />
                        </React.Fragment>
                    ))
                }
            </Container>
        );
    }

    render() {
        if (this.state.submittedFiles.length === 0)
            return this.renderFileInput();

        return this.renderFile();
    }
}

export default SVFineUploaderComponent;

1 Ответ

0 голосов
/ 04 февраля 2020

Очевидно, вы можете использовать методы, указанные здесь , поставив суффикс .methods до uploader перед самим методом.

Примеры

{console.log(uploader.methods.getName(id))}
{console.log(uploader.methods.getFile(id))}
{console.log(uploader.methods.getUuid(id))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...