簡體   English   中英

AJAX 上傳動態創建的 HTML 文件

[英]AJAX upload dynamically created HTML file

我有一個允許下拉元素動態創建 HTML 的網頁。 在此頁面上,我還有一個“創建文件”按鈕。 當我單擊此按鈕時,我希望它發出 AJAX POST 請求並上傳我通過拖放創建的動態頁面以作為文件上傳。

這是一個簡單的 HTML 文件,用於可視化文件的外觀:

<!doctype html>
<html>

<head>
  <title>Test Drag and Drop</title>
</head> 

<body>
     <div class="dynamicPage">

          <div class="subSections">
          </div>

          <div class="subSections">
          </div>

           <!-- more elements and objects in here -->
     </div>

     <div class="stripFromPage">

          <!-- More buttons for drag and drop elements to main page -->
         <button onclick="createFile(this)">Create File</button>
     </div>
</body>

 <script>

   function createFile(elem){

   let url = "action/saveFile";

   var formData = new FormData();

   formData.append('filename', 'test.html');
   formData.append('file', $("html").html());


   $.ajax({
      type: 'POST',
      url: url,
      data: formData,
      contentType: false,
      processData: false,
      success: function (data) {
      alert(data);
      }
   });

  }


 </script>

在服務器端,我有一個帶有上傳方法的 node.js,該方法適用於使用 form 方法的 IOS 應用程序,所以我知道這部分很好。

我需要幫助的部分是如何將 DOM 對象作為文件上傳並將其附加到正確的表單中,指定此文件的名稱以便后端可以將其保存為該文件名。

我更喜歡 javascript 而不是 jquery。 但是我找不到任何用於 AJAX 文件上傳的好的 javascript 代碼,所以我在這里有 jquery。

您可以使用 HTML 字符串創建一個 Blob 對象並將其發送到服務器(未經測試)。

var formData = new FormData();
formData.append('filename', 'test.html');
var dynamicPage = $(elem).html(); // the body of the new file...
var fileBlob = new Blob([dynamicPage], { type: "text/html"});
formData.append('file', fileBlob);

或者這兩個鏈接可能對您有所幫助: 使用 HTML 元素中的數據創建 Javascript Blob()。 然后將其下載為文本文件

https://javascript.info/blob

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM