[英]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()。 然后将其下载为文本文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.