javascript - 如何通过 XmlHttpRequest 或 $.ajax 创建并发送文本文件?

标签 javascript ajax xmlhttprequest

服务器需要来自名称为“websitetopdf”的表单的 html 或 txt 文件。该文件是在客户端 JavaScript 上动态创建的,并且只能在 Chrome 上运行。

这是应该发送的表单:

<form action="send.php" method="post" enctype="multipart/form-data" name="websitetopdf" id="websitetopdf">
<input name="localfile" type="file" id="localfile" size="58">
<input name="filetype" type="hidden" id="filetype" value="IMG">
<input name="source" type="hidden" id="source" value="SOFT">
<input name="converternow" type="submit" id="converternow" style="width: 130px; font-weight: bold;" value="Convert to Image">
</form>

我想直接将文件发送到send.php,我已经尝试过:

$("#sender").on("click", function(e) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://.../send.php", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) console.log(xhr.responseText);
    };
    xhr.onload = function(e) {
        if (xhr.status == 200) console.log("uploaded"); //(correctly uploaded)
        else console.log("Error " + e.status + " occurred uploading your file.<br \/>");
    };
    var blob = new Blob(['abc123'], {type: 'text/plain'});

    var formData = new FormData();
    formData.append("localfile", blob);
    formData.append("filetype", "IMG");
    formData.append("source", "SOFT");
    xhr.send(formData);
});

我总是从服务器收到“这不是有效文件

最佳答案

当我在 FormData 对象中为 blob 添加文件名时,它开始工作:

formData.append("localfile", blob, "filename.txt");

关于javascript - 如何通过 XmlHttpRequest 或 $.ajax 创建并发送文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081146/

相关文章:

javascript - rails : javascript_include_tag :all purpose?

Javascript - 如果表格中一行填充了 4 个单元格,则自动切换/创建另一行

javascript - 单击两个链接时显示一个 Div

javascript - 在加载 Jqgrid 之前和加载网格之后我应该在哪里使用方法来阻止屏幕?

javascript - 从 javascript 返回一个数组

jquery - 有人可以帮我做一个 if 语句吗?结果为真,但事件不会触发

javascript - 如何使用 jQuery 异步上传文件?

php - 使用隐藏的 &lt;input&gt; 并将其值设置为 php 中的某个内容然后传递给 jquery 不好吗?

javascript - 过多的短 PHP 文件

javascript - 将值传递给数据库