gpt4 book ai didi

asp.net-mvc - MVC上传控件

转载 作者:行者123 更新时间:2023-12-04 05:28:03 25 4
gpt4 key购买 nike

我正在开发一个使用 Telerik 控件的 MVC3(razorview)应用程序。
所以我正在做的是以下内容:

我想上传一个文件,做一些验证。如果文件有效,我想为用户提供永久上传文件的选项。如果无效,则会显示错误并且用户无法上传文件。

这是我到目前为止:

Javascript代码:

<script type="text/javascript">
function onSuccess(e) {
if (jQuery.isEmptyObject(e.response.errors) && jQuery.isEmptyObject(e.response.warnings)) {
$("#successmsg").show();
} else {

var errorMsg = "";
if (!jQuery.isEmptyObject(e.response.errors)) {
for (var i = 0; i < e.response.errors.length; i++) {
errorMsg = errorMsg + "<li>" + e.response.errors[i] + "</li>";
}
}
if (errorMsg != "") {
var strErrorContent = $("#errormsg_template").html();
$("#errormsg").html(strErrorContent.replace("{0}", errorMsg));
$("#errormsg").show();
}
}
}

View 中的 Telerik 组件:
<p>
@Html.Telerik().Upload().Name("file_upload").Multiple(false).Async(settings =>
{
settings.AutoUpload(false);
settings.Save("Test", "Pricat");
}).ClientEvents(events =>
{
events.OnError("onError");
events.OnSuccess("onSuccess");
events.OnUpload("onUpload");
})
</p>

所以这段代码适用于验证部分。用户选择文件,上传文件,一些内部处理正在验证消息。
如果消息有效,则会显示成功消息。如果无效,则会显示错误。

我应该如何继续添加一个执行上传的按钮(这基本上只是另一个方法调用),而无需再次浏览文件?

所以以下
settings.Save("Test", "Pricat");

应该成为
settings.Save("Upload", "Pricat");

所以在 Controller 中我有这两种方法:
public ActionResult Upload(HttpPostedFileBase file_upload) { }
public ActionResult Test(HttpPostedFileBase file_upload) { }

我想到的是:
在 javascript 中,如果 e.reponse 不包含错误,则显示一个按钮(ASP.NET 按钮,另一个上传 Telerik 按钮,我不知道..)。
当该按钮被点击时,它应该在我的 Controller 中调用“上传”方法。我只是不知道如何将文件发送到该方法

有谁知道如何做到这一点?
或者任何其他建议都非常受欢迎!

我希望它有点清楚。

提前致谢。

最好的问候。

最佳答案

首先将文件上传两次将是一个非常糟糕的做法。这不仅会使用不必要的带宽,而且您真的无法保证文件的内容在请求之间保持不变。

如果成功,您的“测试”方法应该将文件保存在服务器上的某个位置,处于“已验证但未永久保存”状态,并将对保存的文件的引用返回给客户端。

如果用户决定永久保存文件,您可以将该引用传递回“上传”操作。 (因此它实际上根本不涉及文件上传)

您可能希望清除从未经常永久保存的经过验证的文件,但要正确执行此过程需要付出很小的代价。

关于asp.net-mvc - MVC上传控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com