Eu preciso fazer upload de uma imagem para o servidor NodeJS em algum diretório. Estou usando o connect-busboy
módulo de nó para isso.
Tive o dataURL
da imagem que converti em blob usando o seguinte código:
dataURLToBlob: function(dataURL) {
var BASE64_MARKER = ';base64,';
if (dataURL.indexOf(BASE64_MARKER) == -1) {
var parts = dataURL.split(',');
var contentType = parts[0].split(':')[1];
var raw = decodeURIComponent(parts[1]);
return new Blob([raw], {type: contentType});
}
var parts = dataURL.split(BASE64_MARKER);
var contentType = parts[0].split(':')[1];
var raw = window.atob(parts[1]);
var rawLength = raw.length;
var uInt8Array = new Uint8Array(rawLength);
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: contentType});
}
Preciso de uma maneira de converter o blob em um arquivo para fazer o upload da imagem.
Alguém poderia me ajudar com isso?
javascript
node.js
file-upload
blob
pular
fonte
fonte
blob
. Então, primeiro extraí o nome do arquivo que estava recortando e depois dei o mesmofilename
para o arquivo recortado ao fazer o upload para o servidorform.append("blob",blob, filename);
.Respostas:
Esta função converte um
Blob
em umFile
e funciona muito bem para mim.Vanilla JavaScript
TypeScript (com tipificações adequadas)
Uso
fonte
any
no TypeScript. Veja este exemplo.b.__proto__ = File.prototype
, e sua solução se torna um sonho que mesmo truquesb instanceOf File
paratrue
Você pode usar o construtor de arquivo:
De acordo com a especificação w3, isso acrescentará os bytes que o blob contém aos bytes do novo objeto File e criará o arquivo com o nome especificado http://www.w3.org/TR/FileAPI/#dfn-file
fonte
TypeError: FileConstructor is not a constructor (evaluating 'new File([''], 'file.pdf', {'size': 1000, 'type': 'application/pdf'})')
A resposta de Joshua P Nixon está correta, mas eu tive que definir a data da última modificação também. então aqui está o código.
1534584790000 é um carimbo de data / hora Unix para " GMT: sábado, 18 de agosto de 2018 9:33:10 "
fonte
instanceof
como a resposta aceitaPara que eu funcionasse, tive que fornecer explicitamente o tipo, embora ele esteja contido no blob ao fazer isso:
fonte
Minha variante moderna :
fonte
fd.set('a', blobData, 'filename')
fd.set
Use
saveAs
no projeto github FileSaver.js .FileSaver.js
implementa asaveAs()
interface FileSaver em navegadores que não a suportam nativamente.fonte
Dactilografado
Javascript
Resultado
fonte