Большой файл разделен на куски в браузере (с file.slice), и каждый кусок отправляется с Fetch () на сервер, а также некоторую другую информацию, такую как имя файла, индекс кусок, общее количество кусочков. < /p>
Это то, как мой дено -запрос Handler для кусочка выглядит: < /p>
Это и мой Deno запрос Handler для кусочка: < /p>
это так: < /p>
//
const pending = new Map();
const chunkDir = path.join(`chunks_${query.name}`);
let numUploaded = pending.get(chunkDir) ?? 0;
const chunkPath = path.join(chunkDir, String(i));
await Deno.writeFile(chunkPath, bytes, { mode: 0o644 });
numUploaded++;
pending.set(chunkDir, numUploaded);
if (numUploaded !== query.numChunks) {
return { completed: false };
}
// this is the last chunk, combine all chunks together in finalFile
const finalFile = query.name;
const fh = await Deno.create(finalFile);
for (let i = 0; i < query.numChunks; i++) {
const bytes = await Deno.readFile(path.join(chunkDir, String(i)));
awai fh.write(bytes);
}
fh.close();
pending.delete(chunkDir);
await Deno.remove(chunkDir, { recursive: true });
return { completed: true };
< /code>
Таким образом, он помещает каждый кусок в файл, и когда он имеет все куски, он соединяет их в конечный файл. Это позволило бы избежать много дополнительных чтений и пишет на диске.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... fficiently
Эффективно обрабатывать большую загрузку файлов в DENO ⇐ Javascript
Форум по Javascript
-
Anonymous
1741510859
Anonymous
Большой файл разделен на куски в браузере (с file.slice), и каждый кусок отправляется с Fetch () на сервер, а также некоторую другую информацию, такую как имя файла, индекс кусок, общее количество кусочков. < /p>
Это то, как мой дено -запрос Handler для кусочка выглядит: < /p>
Это и мой Deno запрос Handler для кусочка: < /p>
это так: < /p>
//
const pending = new Map();
const chunkDir = path.join(`chunks_${query.name}`);
let numUploaded = pending.get(chunkDir) ?? 0;
const chunkPath = path.join(chunkDir, String(i));
await Deno.writeFile(chunkPath, bytes, { mode: 0o644 });
numUploaded++;
pending.set(chunkDir, numUploaded);
if (numUploaded !== query.numChunks) {
return { completed: false };
}
// this is the last chunk, combine all chunks together in finalFile
const finalFile = query.name;
const fh = await Deno.create(finalFile);
for (let i = 0; i < query.numChunks; i++) {
const bytes = await Deno.readFile(path.join(chunkDir, String(i)));
awai fh.write(bytes);
}
fh.close();
pending.delete(chunkDir);
await Deno.remove(chunkDir, { recursive: true });
return { completed: true };
< /code>
Таким образом, он помещает каждый кусок в файл, и когда он имеет все куски, он соединяет их в конечный файл. Это позволило бы избежать много дополнительных чтений и пишет на диске.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79495648/handling-large-file-upload-in-deno-efficiently[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия