当前位置: 首页 > 知识库问答 >
问题:

使用 HTML 和脚本将文件上载到具有 AJAX 的 IIS 服务器

谭灿
2023-03-14

我希望能够上传一个图像文件(。png,。jpg等..)到我的网络服务器(用ASPX运行IIS服务器),只使用HTML和AJAX。

代码如下:

<form id="personal-details-form" name="detailsfrm" method="POST" action="/ASPX/verifyPersonalDetails" enctype="multipart/form-data" novalidate>
  <label for="profile-pic-input">
    <img id="profile-pic" name="profilepic" class="profile-pic" src="/Media/user.png" onerror="document.profilepic.src = '/Media/user.png'" />
  </label>
  <img id="profile-pic-check" onerror="clearImage();" style="display: none;"/>
  <input id="profile-pic-input" name="pfpinput" type="file" accept="image/png, image/jpeg"
         onchange="readImage(this);" style="display: none" />

<!-- more code that has nothing to do with this question...-->
// JS
function readImage(input) {
    document.getElementById("personal-details-error").innerHTML = "";
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#profile-pic').attr('src', e.target.result);
            $('#profile-pic-check').attr('src', e.target.result);
        };

        reader.readAsDataURL(input.files[0]);
    }
}

function clearImage() {
    document.getElementById("personal-details-error").innerHTML = "Invalid image.";
    document.getElementById("profile-pic-input").value = "";
}

$("#personal-details-form").submit(function (e) {
    e.preventDefault();
    $(".form-field").addClass("used");
    document.getElementById("personal-details-error").innerHTML = ""; // Remove errors
    if (document.getElementById("personal-details-form").checkValidity()) {
        $.ajax({
            type: "POST",
            url: "../ASPX/verifyChangeDetails.aspx",
            data: $("#personal-details-form").serialize(),
            success: function (data) {

            },
        });
    }
});
if (Request.Files["pfpinput"] != null) {
    HttpPostedFile MyFile = Request.Files["pfpinput"];
    Response.Write(MyFile);
} else {
    Response.Write("Nope!");
}

我听说enctype="multipart/form-data"可以工作,但在我的情况下显然不行...

我应该怎么做才能让我的AJAX代码上传图像文件?

共有1个答案

柴赞
2023-03-14

原来我需要一个FormData对象,并在其中添加一个文件以及其他东西,因为我使用的是AJAX。

var formData = new FormData(document.detailsfrm);
formData.append("pfpinput", document.detailsfrm.pfpinput.files[0]);
 类似资料:
  • 我正在尝试通过Multer将文件上载到服务器。这段代码所做的只是创建文件夹,而不是文件。我还尝试使用github上的教程,但在前端我的代码也没有成功 代码AJAX 还有MAIN.JS 我从前端获得的console.log输出:

  • 问题内容: 我已经审查了有关此主题的问题和答案,但我认为它们不能完全回答我的问题: 使用有角度的前端(无论采用哪种方式)进行上传,都会将文件数据发送到服务器上的脚本(例如php脚本)(这是我的首选方法)。一旦运行了php脚本,我想返回到进行上传的页面并在其中提供消息。我不希望显示php页面。将不胜感激如何实现这一目标的一些指导。理想情况是将什么代码添加到php脚本中。 我想捕获与文件有关的信息并将

  • 问题内容: 我使用以下代码从ftp下载文件到内存: 如何使它直接将文件发送给用户(浏览器)而不保存到磁盘,也无需重定向到ftp服务器? 问题答案: 只需删除输出缓冲(和其他)。 仅使用此: 虽然如果要添加标题,则必须先使用来查询文件大小: (添加错误处理)

  • 问题内容: 我有一个Web应用程序,可以在开发服务器上的VS 2013上正常运行,但是一旦在IIS 7.5 2008 R2服务器上发布了该Web应用程序,位于自定义脚本文件中的Ajax脚本就无法使用了,尽管其他JQuery脚本也是如此不调用Ajax的设备可以正常工作。为了使ajax在服务器中工作,还有其他需要做的事情吗?我已经阅读了一些有关的信息,但尚未找到答案。我在IIS和Ajax方面的经验有限

  • 我正在尝试将文件上载到FTP服务器 正如我在这里发现的,如何将文件上传到FTP服务器?,我有以下代码:

  • 我需要将文件从文件夹同步到restendpoint。因此,如果文件被放置在特定文件夹中,我需要将该文件发送到接受多部分文件的RESTendpoint。我正在使用ApacheCamel来实现这一点。 RESTendpoint在Spring中编写,如下所示: 我是Camel的新手,并且已经弄清楚了如何通过构建路由并获取文件来轮询目录,但是我无法弄清楚如何使用此路由将此文件放入其余endpoint。这是