C# 基础设施IgniteUI IGFileUpload不';t在ASP.NET MVC CORE 3.0中将文件上载到服务器
假设我有一个简单的C# 基础设施IgniteUI IGFileUpload不';t在ASP.NET MVC CORE 3.0中将文件上载到服务器,c#,asp.net-core-mvc,asp.net-core-3.0,ignite-ui,C#,Asp.net Core Mvc,Asp.net Core 3.0,Ignite Ui,假设我有一个简单的Index.cshtml视图: <link href="~/libs/JQueryUI/jquery-ui.css" rel="stylesheet" /> <link href="~/libs/infragistics/css/themes/infragistics/infragistics.theme.css" rel="stylesheet" /> <link href="~/libs/infragistics/css/structure/i
Index.cshtml
视图:
<link href="~/libs/JQueryUI/jquery-ui.css" rel="stylesheet" />
<link href="~/libs/infragistics/css/themes/infragistics/infragistics.theme.css" rel="stylesheet" />
<link href="~/libs/infragistics/css/structure/infragistics.css" rel="stylesheet" />
@using CommonLib.Source.Common.Converters
@using CommonLib.Source.Common.Extensions
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<h1>Index</h1>
<div id="chart" style="color: blue"></div>
<div id="indicator"></div>
<div id="igFileUpload" style="color: blue"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
<script src="~/libs/Lightweight-Charts/dist/lightweight-charts.standalone.development.js"></script>
<script src="~/MyScripts.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Context.GetAbsoluteUrl("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Context.GetAbsoluteUrl("~/Data/UploadedFiles")) // just use Url.Content for testing purposes
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
此处参考:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
为了安全起见,我在web.config
中设置了最大文件大小:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" /> <!-- 1 GB -->
</requestFiltering>
</security>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
以下是结果本身:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
以下是控制文档的参考(其中一些不适用于ASP.NET CORE
):
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
问题是,正如您所看到的,当控件工作时,文件实际上并没有上载到服务器。我不认为这是一个bug,我认为我对CORE 3.0
不够熟悉,并且在IGUploadStatusHandler.ashx
的配置中缺少了一些非常明显的东西如果可能的话,我宁愿避免挖掘默认的Web处理程序代码
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
/编辑
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
根据@MasLoo的建议,我实现了中间件以替换显然需要的IgnoreRoute
,但我无法理解直接从中抛出404将如何使处理程序工作:
(...)
app.UseMiddleware<IgnoreRouteMiddleware>();
(...)
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
在进行测试后,它确实会立即抛出404,实际上是两次:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
关于评论:
//context.Response.StatusCode = 404;
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
小提琴手抓住了这个:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
发出以下信息:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
我没有发布这些消息,因为它们与第一条消息完全相同,内容长度为0
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
欢迎进一步提出意见
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
//编辑2
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
我想我快到了,但还不完全到。我注意到,出于某种原因,如果我保留默认URL,if代码将在UploadUrl
中查找文件文件夹,而不是查找ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx
路径,因此我将HtmlHelper
更改为:
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Context.GetAbsoluteUrl("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Context.GetAbsoluteUrl("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
现在我得到了500分:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
使用以下堆栈跟踪:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 21 Nov 2019 00:17:16 GMT
Content-Length: 1398
System.InvalidOperationException: Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead.
at Microsoft.AspNetCore.Server.IIS.Core.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at Microsoft.AspNetCore.Server.IIS.Core.WrappingStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at Infragistics.Web.Mvc.MiddleWare.UploadModuleMiddleware.ReadFully(Stream input)
at Infragistics.Web.Mvc.MiddleWare.UploadModuleMiddleware.Invoke(HttpContext context)
at CryptoBotCoreMVC.Middlewares.IgnoreRouteMiddleware.Invoke(HttpContext context) in <Path>\CSharp\Projects\CryptoBotCoreMVC\CryptoBotCoreMVC\Middlewares\IgnoreRouteMiddleware.cs:line 23
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
HEADERS
=======
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 244
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3RFkBWmZhhsbjzXr
Host: localhost
Pragma: no-cache
Referer: http://localhost/CryptoBotCoreMVC
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
Sec-Fetch-Mode: cors
Origin: http://localhost
Sec-Fetch-Site: same-origin
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
确实是这样,我很快就会发布详细的答案。为了让
IgniteUI
中的iGpload
控件与ASP.NET CORE MVC 3.0
一起工作,您需要执行以下步骤(请注意,它仍然没有将大文件分块传输,请参阅本文)(尚未更新ASP.NET CORE的
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
添加Infragistics.Web.AspNetCore
和IgniteUI
NuGet软件包,或从Infragistics
安装文件夹手动添加脚本、.css
文件和.dll
文件作为依赖项:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
在web.config
文件中设置maxAllowedContentLength
:
using System;
using System.IO;
using CommonLib.Source.Common.Utils;
using Infragistics.Web.Mvc;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
namespace CryptoBotCoreMVC
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddMvc(option => option.EnableEndpointRouting = false);
//services.Configure<UploadAppSettings>(options =>
//{
// options.FileUploadPath = $@"{Directory.GetCurrentDirectory()}\Data"; //WebUtils.GetWebAppAbsolutePath("
//}); // TODO: fu doesn't work | FileUploadPath is set in the View because it is too early to do it here
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider svp)
{
WebUtils.Configure(app.ApplicationServices.GetRequiredService<IHttpContextAccessor>(), env);
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseStaticFiles();
app.UseRouting();
app.UseUploadModuleMiddleware();
app.UseUploadHandlerMiddleware();
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider($@"{Directory.GetCurrentDirectory()}\Data"),
RequestPath = "/Data",
EnableDirectoryBrowsing = true
});
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
在IIS
中设置允许的最大内容长度(字节)
:CTRL+R
inetmgr
IIS类别请求筛选操作窗格(右侧)
编辑功能设置…
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
将options.AllowSynchronousIO=true
包含在Startup.cs
文件中,用于Kestrel
和/或IIS
以防止中间件
抛出不允许同步操作。调用ReadAsync或将AllowSynchronousIO改为true
异常
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
将maxFileSizeLimit
设置为正值,因为尽管有文档语句,如果将其设置为null
,-1
或根本不设置此选项,则它将不适用于较大的文件
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
将FileUploadPath
设置为应用程序驱动器上的物理目录(而不是虚拟目录)
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
呈现控件,包括ProgressUrl
、UploadUrl
和ControlID
选项,并将它们设置为下面可见的精确值,以防止中间件
抛出各种inxeplicit404
错误(代码示例将位于此答案的底部)
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
获得所需的结果:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
重要提示:IgnoreRoute
不是必需的!
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
代码示例:
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
Startup.cs
:
using System.IO;
using Infragistics.Web.Mvc;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace IgUpload
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options => options.EnableEndpointRouting = false);
services.Configure<KestrelServerOptions>(options => options.AllowSynchronousIO = true);
services.Configure<IISServerOptions>(options => options.AllowSynchronousIO = true);
services.Configure<UploadAppSettings>(options =>
{
options.maxFileSizeLimit = "1073741824"; // 1 GB
options.FileUploadPath = $@"{Directory.GetCurrentDirectory()}\Data\UploadedFiles";
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment()) app.UseDeveloperExceptionPage();
app.UseStaticFiles();
app.UseRouting();
app.UseUploadModuleMiddleware();
app.UseUploadHandlerMiddleware();
app.UseMvc(routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"));
}
}
}
@using Infragistics.Web.Mvc
@using Microsoft.AspNetCore.Http
@{
ViewData["Title"] = "Index";
}
<div id="igFileUpload"></div>
<script src="~/libs/JQuery/jquery.js"></script>
<script src="~/libs/JQueryUI/jquery-ui.js"></script>
<script src="~/libs/infragistics/js/infragistics.core.js"></script>
<script src="~/libs/infragistics/js/infragistics.lob.js"></script>
@(
Html.Infragistics().Upload()
.ID("igFileUpload")
.Mode(UploadMode.Multiple)
.AutoStartUpload(true)
.ProgressUrl(Url.Content("~/IGUploadStatusHandler.ashx"))
.UploadUrl(Url.Content("~/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx"))
.ControlId("serverID1")
.Width("600px")
.Render()
)
<div id="error-message" style="color: #FF0000; font-weight: bold;"></div>
<script type="text/javascript">
$(function () {
$("#igFileUpload").bind({ iguploadonerror: function (e, args) {
$("#error-message").html(args.errorMessage).stop(true, true).fadeIn(500).delay(3000).fadeOut(500);
}
});
});
</script>
基于MVC项目,您需要忽略到HTTP处理程序的路由。IgnoreRoute在ASP.NET CORE 3.0 afaik中不可用。对,它在整个.NET CORE中都不可用(在CORE 1.0中也不可用)。您可以将其作为中间件来实现。更新我的帖子以包含您的建议@MasLoo,我将感谢您的进一步帮助。这行有什么问题:options.FileUploadPath=$@“{Directory.GetCurrentDirectory()}\Data”
?它也容易出错吗?