如何在服务器端Page方法中获取Ajax发送的已发布文件
本文关键字:布文件 文件 Ajax 服务器端 Page 方法 获取 | 更新日期: 2023-09-27 18:23:40
我已经工作了一整天。我不想使用任何花哨的插件。我的问题基本上是:在asp.net c#中,用户可以创建一个类的实例(比如说student),每个实例都有一个文件(image)。我使用的是AJAX,代码运行良好。当用户按下创建按钮时,我还想将发布的文件发送到Page方法,该方法可以保存文件,同时将记录添加到数据库中。然而,我无法在Page方法中以FileInfo的形式获取发布的文件,而是以字符串的形式获取。有没有办法做到这一点?
function addBadge() {
var badgeName = $('#txtBadgeName').val();
var badgeDesc = $('#txtBadgeDesc').val();
var badgeImage = $('#file_BadgeImage').get().files[0];
$.ajax({
type: "POST",
url: "/Instructor/ManageBadges.aspx/CreateBadge",
data: "{badgeName:'" + badgeName + "', '
badgeImage:'" + badgeImage + "','
badgeDescription:'" + badgeDesc + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
.....
}
}
});
}
[WebMethod]
public static string CreateBadge(string badgeImage, string badgeName, string badgeDescription)
{
//HERE HOW CAN USE badgeImage ??
//HOW CAN I CONVERT IT TO FileInfo and save ?
Guid badgeId = Guid.NewGuid();
BadgeInfo newbadge = new BadgeInfo();
newbadge.BadgeId = badgeId;
newbadge.BadgeName = badgeName;
newbadge.BadgeDescription = badgeDescription;
}
首先,我会尝试将内容类型设置为:
contentType:'multipart/form-data'
然后我会阅读这篇关于支持AJAX和文件上传的文章。
jQuery Ajax文件上传
它似乎是最近才开始得到支持的。我知道,当您发布一个没有ajax的常规表单时,它必须具有enctype"multipart/form data"才能发送文件。
老实说,我不熟悉ASP C#方面的文件操作,但我知道在你进入这方面之前,你会遇到一些问题。
对于那些需要ajax asp.net解决方案(提交带有文件的表单)而不使用花哨的文件上传插件的人:
我在这里强烈引用了一个最新的解决方案:在ASP.NETWebneneneba API 中使用jQueryAJAX上传文件
所示的解决方案使用一个控制器来处理文件上传,并且控制器的文件上传功能是从ajax调用的。假设您有一个ajax方法,用于将表单输入保存到数据库中。在这个ajax成功完成之后,在成功事件中,您需要编写另一段ajax代码来执行控制器类中定义的文件上传,如下所示:
[HttpPost]
public KeyValuePair<bool, string> UploadFile()
{
try
{
if (HttpContext.Current.Request.Files.AllKeys.Any())
{
// Get the uploaded image from the Files collection
var httpPostedFile = HttpContext.Current.Request.Files["UploadedImage"];
if (httpPostedFile != null)
{
// Validate the uploaded image(optional)
// Get the complete file path
var fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/UploadedFiles"), httpPostedFile.FileName);
// Save the uploaded file to "UploadedFiles" folder
httpPostedFile.SaveAs(fileSavePath);
return new KeyValuePair<bool, string>(true, "File uploaded successfully.");
}
return new KeyValuePair<bool, string>(true, "Could not get the uploaded file.");
}
return new KeyValuePair<bool, string>(true, "No file found to upload.");
}
catch (Exception ex)
{
return new KeyValuePair<bool, string>(false, "An error occurred while uploading the file. Error Message: " + ex.Message);
}
}
有关详细信息,请参阅帖子。