#javascript #node.js #vue.js #vuejs3
Вопрос:
Я создал компонент vue dropzone, используя dropzonejs. Компонент работает, однако я не могу настроить dropzone для загрузки файлов размером более 256 МБ, что, по моему мнению, является значением по умолчанию. Для целей тестирования я поставил 1 МБ(уменьшив максимальный размер файла).
Я также попытался поместить свой код конфигурации в смонтированный перед монтированием, созданием и т. Д.
Мой Код
<template>
<div class="dropzone-container">
<form
:action="uploadurl"
class="dropzone drop-area"
enctype="multipart/form-data"
id="myDropzone"
ref="myDropzone"
:key="`dz-${dzkey}`"
>
<input type="hidden" name="path" :value="currentPath" />
</form>
<button class="finish-button" @click="finishUpload">Finish Upload</button>
</div>
</template>
<script>
// import * as Dropzone from "dropzone/dist/min/dropzone.min.js";
import FileHandling from "../fileHandling";
const Dropzone = require("dropzone/dist/dropzone.js");
Dropzone.autoDiscover = true;
export default {
name: "DropZone",
props: ["currentPath"],
data() {
return {
uploadurl: FileHandling.SendForUpload(),
dzkey: 0,
};
},
methods: {
finishUpload() {
this.$refs.myDropzone.dropzone.removeAllFiles();
this.$emit("finishedUpload");
},
dropconfig() {
console.log(Dropzone);
Dropzone.options[this.$refs.myDropzone] = {
maxFilesize: 1,
};
},
},
ready: function() {
this.dropconfig();
},
};
</script>
Ответ №1:
В вашем коде есть две проблемы:
ready
Крючка нет. Возможно, вы имели в видуmounted
:export default { // ❌ ready hook does not exist //ready() { // this.dropconfig(); //}, // ✅ mounted() { this.dropconfig(); } }
Dropzone.options
представляет собой карту идентификаторов элементов (строк), а не экземпляров элементов (HTMLElement
):// ❌ //Dropzone.options[this.$refs.myDropzone] = {/*...*/}; // ✅ `myDropzone` is a string that matches element ID in template Dropzone.options.myDropzone = {/*...*/};
Устранение этих проблем должно позволить вашей maxFilesize
конфигурации вступить в силу.
Комментарии:
1. Меня смутил тот факт, что вы не могли использовать select by id в vue, вот почему я использовал ссылки. Спасибо, что это сработало, однако мне пришлось использовать
Dropzone.Dropzone.options.myDropzone
по какой-то причине, а неDropzone.toptions.myDropzone
. В любом случае, я смог заставить это работать, спасибо.