Мне нужно загрузить изображение на сервер NodeJS в какой-то каталог. Для этого я использую connect-busboy
модуль узла.
У меня был dataURL
образ, который я преобразовал в blob, используя следующий код:
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});
}
Мне нужен способ преобразовать большой двоичный объект в файл для загрузки изображения.
Может ли кто-нибудь помочь мне с этим?
javascript
node.js
file-upload
blob
пропускать
источник
источник
blob
. Итак, я сначала извлек имя файла, который я обрезал, а затем дал то же самое,filename
чтобы обрезать файл, загружая его на сервер путем выполненияform.append("blob",blob, filename);
.Ответы:
Эта функция преобразует a
Blob
в a,File
и у меня она отлично работает.Ванильный JavaScript
TypeScript (с правильной типизацией)
использование
источник
any
TypeScript. См. Этот пример.b.__proto__ = File.prototype
, и ваше решение становится мечтой , что даже трюкиb instanceOf File
наtrue
Вы можете использовать конструктор файлов:
Согласно спецификации w3, это добавит байты, содержащиеся в большом двоичном объекте, к байтам для нового объекта File, и создаст файл с указанным именем http://www.w3.org/TR/FileAPI/#dfn-file
источник
TypeError: FileConstructor is not a constructor (evaluating 'new File([''], 'file.pdf', {'size': 1000, 'type': 'application/pdf'})')
Ответ Джошуа П. Никсона правильный, но мне также пришлось установить дату последнего изменения. так вот код.
1534584790000 - это временная метка unix для « GMT: суббота, 18 августа 2018 г., 9:33:10 AM ».
источник
instanceof
как принятый ответЧтобы я работал, мне пришлось явно указать тип, хотя он содержится в большом двоичном объекте:
источник
Мой современный вариант:
источник
fd.set('a', blobData, 'filename')
fd.set
Используйте
saveAs
в проекте Github FileSaver.js.FileSaver.js
реализуетsaveAs()
интерфейс FileSaver в браузерах, которые его не поддерживают.источник
Машинопись
Javascript
Вывод
источник