Vue FileUploader - Specify a file's GUID

Use the valueChanged event to generate a unique identifier (GUID) for a file before it is uploaded and pass it as a parameter to the upload URL.

See Also: DataGrid - How to use FileUploader as a cell editor.

App.vue
  • <template>
  • <DxFileUploader
  • :accept="accept"
  • :multiple="multiple"
  • :upload-mode="uploadMode"
  • upload-url="https://js.devexpress.com/Demos/NetCore/FileUploader/Upload"
  • @value-changed="onValueChanged($event)"
  • />
  • </template>
  •  
  • <script>
  • import 'devextreme/dist/css/dx.light.css';
  •  
  • import { DxFileUploader } from "devextreme-vue/file-uploader";
  •  
  • export default {
  • components: {
  • DxFileUploader
  • },
  • data() {
  • return {
  • multiple: false,
  • accept: "*",
  • uploadMode: "instantly"
  • };
  • },
  • methods: {
  • onValueChanged(e) {
  • var url = e.component.option("uploadUrl");
  • url = this.updateQueryStringParameter(url, "fileGuid", this.uuidv4());
  • e.component.option("uploadUrl", url);
  • },
  • updateQueryStringParameter(uri, key, value) {
  • var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  • var separator = uri.indexOf("?") !== -1 ? "&" : "?";
  • if (uri.match(re)) {
  • return uri.replace(re, "$1" + key + "=" + value + "$2");
  • } else {
  • return uri + separator + key + "=" + value;
  • }
  • },
  • uuidv4() {
  • return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(
  • c
  • ) {
  • var r = (Math.random() * 16) | 0,
  • v = c === "x" ? r : (r & 0x3) | 0x8;
  • return v.toString(16);
  • });
  • }
  • }
  • }
  • </script>