Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Axios:上传到s3在上传完成前解析_Javascript_Reactjs_Amazon Web Services_Amazon S3_Axios - Fatal编程技术网

Javascript Axios:上传到s3在上传完成前解析

Javascript Axios:上传到s3在上传完成前解析,javascript,reactjs,amazon-web-services,amazon-s3,axios,Javascript,Reactjs,Amazon Web Services,Amazon S3,Axios,我正在通过一个签名的url将图像上传到s3。承诺立即解决,但上传继续。我知道上传完成的唯一方法是检查是否将上传进度与文件大小进行比较。我认为这不是应该做的事情。我遗漏了什么吗 这是我的代码 import { API } from "aws-amplify"; ... const post = async e => { e.preventDefault(); setIsSubmitting(true); let params = { body: { conte

我正在通过一个签名的url将图像上传到s3。承诺立即解决,但上传继续。我知道上传完成的唯一方法是检查是否将上传进度与文件大小进行比较。我认为这不是应该做的事情。我遗漏了什么吗

这是我的代码

import { API } from "aws-amplify";
...

  const post = async e => {
    e.preventDefault();
    setIsSubmitting(true);

    let params = { body: { content: values.text } };
    if (values.file) params.body = { ...params.body, img: values.file.name };

    API.post(API_NAME, POST_URL, params)
      .then(response => {
        if (!params.body.img) {
          history.push(`/${username}`);
          return;
        }
        const options = {
          headers: { "Content-Type": "image/*" },
          onUploadProgress: progressEvent => console.log(progressEvent.loaded)
        };
        console.log(`Uploading file to ${response.url}`);
        axios.put(response.url, values.file, options);
      })
      .then(response => {
        console.log("Successfully created post.");
        console.log(response);
      })
      .catch(err => {
        alert(err.message);
        setIsSubmitting(false);
      });
  };
输出:

axios.put(response.url、values.file、options)

这也是一个承诺。也许你可以在这个承诺之后再打电话

axios.put(response.url, values.file, options).then(response => {
        console.log("Successfully created post.");
        console.log(response);
      })

谢谢你,成功了。我错误地使用了承诺链。而不是你的建议(.then in a.then)我只需要在axios前面放一个回车键。放…没问题,哦,是的,那更合适。我也有点难以兑现承诺