C# 在asp.net mvc中通过ajax上传带有其他参数的文件
我正在使用c#在asp.net mvc中工作 我想上传一个图像,它是从文件浏览器窗口中选择的,包含在表单标签中C# 在asp.net mvc中通过ajax上传带有其他参数的文件,c#,asp.net,ajax,asp.net-mvc,json,C#,Asp.net,Ajax,Asp.net Mvc,Json,我正在使用c#在asp.net mvc中工作 我想上传一个图像,它是从文件浏览器窗口中选择的,包含在表单标签中 <form id="uploader" method="post" enctype="multipart/form-data"> <input type="file" name="file" id="fileInput"/> 在同一视图中,我还有其他不属于表单的字段。我通过ajax将这些字段转换为JSON对象来发送这些字段。除此之外,我还想添加图像…请
<form id="uploader" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="fileInput"/>
在同一视图中,我还有其他不属于表单的字段。我通过ajax将这些字段转换为JSON对象来发送这些字段。除此之外,我还想添加图像…请帮助我完成此操作…如果您想通过ajax发送文件,可以使用HTML5 FileReader API API允许您读取文件的内容(从): FileReader.readAsArrayBuffer()文件 开始读取指定Blob的内容,完成后,result属性包含一个表示文件数据的ArrayBuffer FileReader.readAsBinaryString()文件 开始读取指定Blob的内容,一旦完成,result属性将以字符串形式包含文件中的原始二进制数据 FileReader.readAsDataURL() 开始读取指定Blob的内容,一旦完成,result属性包含一个data:URL,表示文件的数据 FileReader.readAsText()文件 开始读取指定Blob的内容,一旦完成,result属性将文件内容作为文本字符串包含 然后,您可以将文件内容作为Base64编码字符串与所有其他数据一起发送
请注意,这只适用于IE10+和其他现代浏览器。作为一个问题,我不太清楚,我在这里展示了我假设的示例 你可以用 添加jquery表单插件
<script src="http://malsup.github.com/jquery.form.js"></script>
查看页面
@using (Ajax.BeginForm("YourAction", "YourController", new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data"}))
{
@Html.AntiForgeryToken()
//I assume other fields are
<input id="FirstName" name="FirstName" type="text"/>
<input id="LastName" name="LastName" type="text"/>
//Image upload
<input type="file" name="files">
<br>
<input type="submit" value="Upload File to Server">
}
@使用(Ajax.BeginForm(“YourAction”、“YourController”、新的AjaxOptions(){HttpMethod=“POST”}、新的{enctype=“multipart/form data”}))
{
@Html.AntiForgeryToken()
//我想其他领域是
//图像上传
}
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public void YourAction(IEnumerable<HttpPostedFileBase> files, string FirstName, string LastName)
{
if (files != null)
{
foreach (var file in files)
{
// Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(file.FileName);
// TODO: need to define destination
var path = Path.Combine(Server.MapPath("~/Upload"), fileName);
file.SaveAs(path);
}
}
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public void YourAction(IEnumerable文件、字符串FirstName、字符串LastName)
{
如果(文件!=null)
{
foreach(文件中的var文件)
{
//验证用户是否选择了一个文件
如果(file!=null&&file.ContentLength>0)
{
//只提取fielname
var fileName=Path.GetFileName(file.fileName);
//TODO:需要定义目的地
var path=path.Combine(Server.MapPath(“~/Upload”),文件名);
file.SaveAs(路径);
}
}
}
}
显示您的json代码。。!显示您的json传递参数使用我几个月前发布的示例