На HTML-странице размещена форма, данные из которой через клиентский JS отправляются на сервер. На сервере данные обрабатываются, и исходя из их значений создается определенный docx-файл. Этот сгенерированный файл отправляется обратно клиенту на скачивание.
Клиентская и серверная часть написаны на JavaScript. Для создания документа на сервере используется модуль
DOCX.js.
Клиентская часть:
$(document).on('click', '#btnCreate', function (event) {
event.preventDefault();
var xhr = new XMLHttpRequest();
xhr.open('POST', '/postCreateDoc', true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onload = function(){
/*Обработка полученного файла, отправка файла на загрузку*/
};
var kindDoc = $('#typeDoc').val(); /*Получение данных из Select*/
var userName = $('#userName').val(); /*Получение данных из Input*/
var data = JSON.stringify([kindDoc, userName]);
xhr.send(data);
});
Серверная часть:
var docx = require('docx');
var express = require('express');
var app = express();
/*Обработка других запросов*/
app.post('/postCreateDoc', function(req,res){
const chunks = [];
req.on('data', chunk => chunks.push(chunk));
req.on('end', () => {
var data = Buffer.concat(chunks);
data = JSON.parse(data);
/*Обработка полученных данных*/
/*Для примера привожу создание абзаца в WORD-документе:*/
var doc = new docx.Document(); /*Создание документа*/
var p1 = new docx.Paragraph('Текст-текст-текст-текст'); /*Создание параграфа(абзаца) с текстом*/
doc.addParagraph(p1); /*Добавление параграфа в документ*/
/*Отправка файла*/
});
});
Меня интересуют непосредственно вопросы: какой код надо прописать в
серверной части, чтобы
отправить сгенерированный docx-файл клиенту, и какой код надо прописать в
клиентской части, чтобы этот файл
отправить на загрузку. Не обязательно примеры с фалами формата .doc(x)... Думаю, пойдут примеры и с обычными .txt файлами.
---
.doc-файл через XAML и HTML создавала. Проблема в том, что при из последующем изменении этого документа на компьютере в каталоге создавалась папка <имя документа>.files со XAML-файлами. По этой причине использую модуль в серверной части.
Создание документа на клиентской части, как
здесь, не рассматриваю. Я лишь в пример привела такой простой код по созданию файла.