incredible123
incredible123

Reputation: 123

AntD's Upload keeps showing failed tooltip but it is uploading successfully

I am using antd's Upload component, its task is to just upload the image and then I grab that image and send it to the API to store it. But I keep getting upload failed message tooltip as I am not using any action prop that they provide. Even their own website has this problem as I'm trying to upload something and it shows failed message but it has been actually uploaded. antd's Upload

I am using useState to save the file const [uploadedImage, setUploadedImage] = useState();

My fileProps looks like this:

  const fileProps = {
    name: 'file',
    multiple: false,
    onChange(info) {
      if (info.file.status !== 'uploading') {
         let reader = new FileReader();
          reader.onload = (e) => {
             setData({
              ...data,
              image: new File([e.target.result], info.file.name),
            });
            setIsFileUploaded(true);
          }
          reader.readAsDataURL(info.file.originFileObj);
          setUploadedImage(info.file.originFileObj);
      }
    },
  };

I then pass it to the Upload Component:

<Upload {...fileProps}>
   <Button icon={<UploadOutlined />}>Upload Image</Button>
</Upload>

Why does it keep showing Upload error Tooltip even though it is successfully uploading and I can store it? how can I remove this tooltip? I know there is a way to hide the list entirely by using: showUploadList: false but I want to show the uploaded file as sometimes during big uploads I don't have any sort of confirmation if the file is uploading or uploaded.

I have also created codesandbox for it: https://codesandbox.io/s/bold-bash-g3qkj

Upvotes: 1

Views: 4625

Answers (1)

Andrey
Andrey

Reputation: 1066

If you just want to save the file to the state, and not send it automatically to the server, you must set the property beforeUpload.

const fileProps = {
  name: "file",
  multiple: false,
  beforeUpload: () => {
    return false;
  },
  onChange(info) {
    if (info.file.status !== "uploading") {
      let reader = new FileReader();
      reader.readAsDataURL(info.file);
      setUploadedImage(info.file);
    }
  }
};

Upvotes: 1

Related Questions