Вчера я разместил вопрос (ссылка здесь ), где я пытался отправить PDF-файл в базу данных, а затем получить его позже. С тех пор мне сообщили, что лучше всего (в моем случае, поскольку я не могу использовать службы облачных вычислений) загрузить файлы PDF в локальное хранилище и вместо этого сохранить URL-адрес файла в базе данных. Я начал реализовывать это, но столкнулся с некоторыми проблемами.
В настоящее время я использую FileReader (), как описано ниже, для обработки входного файла и отправки его на сервер:
var input_file = "";
let reader = new FileReader();
reader.readAsText(document.getElementById("input_attachment").files[0]);
reader.onloadend = function () {
input_file = "&file=" + reader.result;
const body = /*all the rest of my data*/ + input_file;
const method = {
method: "POST",
body: body,
headers: {
"Content-type": "application/x-www-form-urlencoded"
}
};
После этого блока c кода я выполняю стандартную fetch (), и маршрут на моем сервере получает это. Почти все данные поступают на 100%, как и ожидалось, но файл обрезан примерно на 1300 символов (что делает его довольно неполным PDF). То, что действительно появляется, похоже, соответствует первым 1300 символам исходного загруженного мной PDF-файла.
Я видел предложения о том, что вы должны использовать тип содержимого "multipart / form-data" для загрузки файлов, но когда я это делаю, мне кажется, только тогда я получаю первые 700 символов моего PDF-файла. Я пробовал использовать промежуточное ПО Multer для обработки "multipart / form-data", но оно, похоже, ничего не загружает (хотя я не могу гарантировать, что использую его правильно).
Я также изначально имелись проблемы с сообщением об ошибке выборка слишком большой нагрузки , но в настоящее время я решил эту проблему с помощью этого метода:
app.use(bodyParser.urlencoded({ limit: "50mb", extended: false, parameterLimit: 50000 }));
Хотя у меня есть подозрения, что это может быть неправильно реализовано, как я видел некоторое обсуждение того, что ограничение urlencoded устанавливается до загрузки файла и не может быть изменено в середине программы.
Любая помощь приветствуется, и я, вероятно, буду использовать любую информацию здесь, чтобы построить ответ на мой вчерашний исходный вопрос, чтобы у всех, кто сталкивается с подобными проблемами, был ресурс от go до