Ant-design: Componente de upload: verifique se há problemas antes de enviar antes de fazer upload

Criado em 29 dez. 2017  ·  7Comentários  ·  Fonte: ant-design/ant-design

Versão

3.0.3

Meio Ambiente

win7, chrome63.0.3239.84

Link de reprodução

https://codepen.io/LynnHg/pen/YYZdRV

Passos para reproduzir

handleBeforeUpload (arquivo) {
const sizeOk = file.size <1024 * 300;
const typeOk =
file.type === 'image / jpeg' ||
file.type === 'image / png' ||
file.type === 'image / bmp' ||
file.type === 'imagem / gif';

if (!typeOk) {
  message.error('照片格式有误!');
} else {
  if (!sizeOk) {
    message.error('照片大小超过300K!');
  }
}

return sizeOk && typeOk;

}

O que é esperado?

Ao enviar fotos no formato errado, ele informa que o formato está errado, mas nenhum efeito é exibido

O que realmente está acontecendo?

Ao enviar fotos no formato errado, ele informa que o formato está errado, mas a interface exibe "Upload de arquivo"

Inactive 🐛 Bug

Comentários muito úteis

beforeUpload (arquivo) {
const maxFileSize = 2;
const isLtMax = file.size / 1024/1024 <maxFileSize;

return new Promise((resolve, reject) => {
  if(!isLtMax) {
    reject(file);
  } else {
    resolve(file);
  }
});

};
Dessa forma, evitará que o arquivo de erro seja adicionado à fileList.

Todos 7 comentários

Será melhor escrever seu problema / comentário em inglês, para que mais pessoas possam entendê-lo.
E isso significa que mais pessoas podem ajudá-lo ou se beneficiar de seu problema / comentário.
Veja: https://github.com/ant-design/ant-design/issues/4897

Isso ocorre porque há um problema com o método de retorno de chamada de onChange , ele não pode ser escrito assim

Eu acho que é um problema, quando beforeUpload retrun false, file object no callback onChange deve dar um direito status .

e se usar Promise, rejeitar não irá disparar onChange , mas retornar false irá!

if (!typeOk) {
   message.error('照片格式有误!');
   return false
} 
if (!sizeOk) {
    message.error('照片大小超过300K!');
    return false
}
return true;

Duplicado de # 8020

beforeUpload (arquivo) {
const maxFileSize = 2;
const isLtMax = file.size / 1024/1024 <maxFileSize;

return new Promise((resolve, reject) => {
  if(!isLtMax) {
    reject(file);
  } else {
    resolve(file);
  }
});

};
Dessa forma, evitará que o arquivo de erro seja adicionado à fileList.

Esta página foi útil?
0 / 5 - 0 avaliações