Alguns cenários, como imagens obtidas pelo canvas ou imagens retornadas pelo SDK de desenvolvimento do WeChat, estão no formato data:img. Precisamos carregá-los no servidor e, em seguida, eles precisam ser convertidos.
Converter dataURL em Blob
// converte base64 em blobdataURItoBlob(dataURI) { // converte o componente de dados base64/URLEncoded em dados binários brutos mantidos em uma string let byteString if (dataURI.split(',')[0].indexOf('base64') > = 0) { byteString = atob(dataURI.split(',')[1]); unescape(dataURI.split(',')[1]); // separa o componente mime const mimeString = dataURI .split(',')[0] .split(':')[1] .split(' ;')[0]; // escreve os bytes da string em um array digitado const ia = new Uint8Array(byteString.length); byteString.length; i++) { ia[i] = byteString.charCodeAt(i } retornar novo Blob([ia], { tipo: mimeString });},
Formulário de upload de formulário de construção
const blob = dataURItoBlob(imgDataUrl); const formData = new FormData();// formData.append('auth', state.token.auth Você pode opcionalmente adicionar alguma autenticação formData.append('file', blob ); Para fazer upload de dados, eu uso axiosconst params = { url: '/store/file', payload: formData }; this.upload(params);
Eu encapsulei axios
export const upload = (params) => { const { url, payload } = params return axios.post(url, payload, { headers: { 'Content-Type': 'multipart/form-data' } }).then( x => x.dados)}
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.