通过http请求的动态网址 - Dropzone.js

时间:2017-11-09 17:43:15

标签: javascript asynchronous dropzone.js axios

问题:我通过dropzone.js上传文件后收到此错误

  

POST http://localhost:8080/[object%20Promise] 404(未找到)

我正在使用dropzone.js库在应用上传视频。 每次对于每个文件,网址都是不同。所以我发出http请求 - 使用axios - 以便每次获取url。

我发现唯一可行的解​​决方案是将回调函数传递给url(Dropzone.options):

   var myDropzone = new Dropzone(".my-upload-container", { 
            url: axios.post('/createURL)
                   .then( function (response) {
                       var theURL = bla
                       return theURL
                   })
          });

当我上传文件并且Dropzone正在发送POST请求时,我收到404错误。

问题: 如何获得我想要的正确网址?

我想要的网址示例如:http://blabla.com/v1/key=bla&token=bla

1 个答案:

答案 0 :(得分:0)

以下是同一问题的答案:https://stackoverflow.com/a/49900990/3236706



Dropzone.autoDiscover = false;

const doStuffAsync = (file, done) => {
  fetch('https://httpbin.org/get').then((response) => {
    file.dynamicUploadUrl = `https://This-URL-will-be-different-for-every-file${Math.random()}`
    done();//call the dropzone done
  })  
}

const getMeSomeUrl = (files) => {
  return `${files[0].dynamicUploadUrl}?sugar&spice`;
}

let myDropzone = new Dropzone("#my-awesome-dropzone", {
  method: "put",
  accept: doStuffAsync,
  url: getMeSomeUrl
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/min/dropzone.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/min/dropzone.min.css">

<form action="/file-upload" class="dropzone" id="my-awesome-dropzone">
</form>
&#13;
&#13;
&#13;