как изменить заголовки экспресс-почты? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть приложение node / express, и я хочу добавить отправку изображения в форму заказа.

Я могу получить html-форму для POST, используя ссылку действия, но я также хочу, чтобы мой javascript-файл для этой страницы мог принимать все остальные данные формы и отправлять их на другой почтовый маршрут для создания базы данных. запись для всего заказа.

Вот мой HTML, который работает для отправки поста и изображения, но перезагружает страницу из-за поведения по умолчанию события.

<form id="editOrderForm" method="POST" action="/uploadphoto" enctype='multipart/form-data' >

                        <div class="form-row">
                          <div class="form-group col-md-3">
                            <label for="orderWarranty">Warranty Type</label>
                            <input type="text" class="form-control" id="orderWarranty" placeholder="Warranty Type">
                          </div>
                          <div class="form-group col-md-3">
                            <label for="orderAppliance">Appliance</label>
                            <input type="text" class="form-control" id="orderAppliance" placeholder="Appliance">
                          </div>
                          <div class="form-group col-md-3">
                            <label for="orderBrand">Brand</label>
                            <input type="text" class="form-control" id="orderBrand" placeholder="Brand">
                          </div>
                          <div class="form-group col-md-3">
                            <label for="orderModel">Model</label>
                            <input type="text" id="orderModel" class="form-control" placeholder="">
                          </div>
                        </div>

  <div class="modal-body mx-6" id="editOrderDiv">
    <div class="col-md-3">
      <label for="image-upload">Upload Image</label>
       <input type="file" accept="image/*" id="imageupload" name="imageupload">
    </div>
  </div>
  <div class="modal-footer d-flex justify-content-center">
      <input type="submit" class="btn btn-primary" id="ordersubmit"></input>
  </div>
 </div>
</form>

Мне нужно, чтобы приведенный ниже код также выполнялся после отправки формы, чтобы создать еще один пост.

Если я пытаюсь опубликовать маршрут загрузки из моего файла js, он отправляет сообщение с типом содержимого application / x-www-form-urlencoded вместо multipart / form-data независимо от того, что я делаю, поэтому multer не принимает это.

Есть ли способ установить тип содержимого перед отправкой запроса в бэкэнд?

$("#editOrderForm").on("submit", function handleFormSubmit(event) {
    event.preventDefault();

    function submitOrder(Order) {
      $.post("/api/orders/" + currentOrder.id, Order, function () {
        getOrders(orderCategorySelect.val());
      });
    };

1 Ответ

0 голосов
/ 03 мая 2019

Я на самом деле не использую jQuery, но я думаю, что вы хотите создать объект заголовков при вызове $.post.

Извлечь jquery docs , который также ссылается на настройки ajax .

При просмотре документов создается впечатление, что вам нужно создать запрос Ajax с правильным заголовком в настройках, а затем использовать этот запрос для выполнения фактического POST.

Что-то вроде:

let request = $.post({
  "header" : "multipart/form-data"
})

request("/api/orders", [rest of code here])
...