です。フォームを送信するためにajaxを使用するasp.netフォームがあります。 jQueryのエラーが表示されていますが、サーバー上のファイルをチェックすると、ファイルは問題なくアップロードされています。ajaxを使用してファイルをアップロードするとエラーが返されますが、asp.netのasp.netで正常に送信されたファイルはC#
注:サイズの大きいファイルを多数送信すると、すべてのファイルが送信されるわけではありません。
クライアントページ:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewForm_Frontend_test.aspx.cs" Inherits="eformsmanagementtool.NewForm_Frontend_test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="JavaScript/jquery-1.12.3.js"></script>
</head>
<body>
<form id="form1" runat="server">
<input id="name" type="text" placeholder="name" />
<button id="btnUpload">Click</button>
<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="True" />
</form>
<script type="text/javascript">
$("#btnUpload").click(function (event) {
alert("Script Started")
var files = $("#FileUpload1")[0].files;
if (files.length > 0) {
var formData = new FormData();
for (var i = 0; i < files.length; i++) {
formData.append(files[i].name, files[i]);
}
alert("Number of files: " + files.length)
formData.append("Name", "John");
alert("Before ajax")
$.ajax({
url: 'NewForm_Backend_test.aspx',
timeout: 30000,
data: formData,
method: 'post',
contentType: false,
processData: false,
success: function (msg) {
alert("Good")
},
error: function (err) {
alert("Bad")
}
});
}
});
</script>
</body>
</html>
サーバー側のページ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Text.RegularExpressions;
using System.Globalization;
namespace eformsmanagementtool
{
public partial class NewForm_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(20000);
string data = Request.Form["Name"];
Response.Write("You've submitted: " + data);
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
string fileName = Server.MapPath("~/Documents/" + Path.GetFileName(file.FileName));
if (File.Exists(fileName))
{
File.Delete(fileName);
file.SaveAs(fileName);
Response.StatusCode = 200;
}
else
{
file.SaveAs(fileName);
Response.StatusCode = 200;
}
}
Response.Headers.Add("Content-type", "text/json");
Response.Headers.Add("Content-type", "application/json");
}
}
}