【发布时间】:2020-12-25 13:42:35
【问题描述】:
您好,我想使用 jquery ajax 附加多个文件并将其保存在数据类型为 blob 的表的列中。我不知道在模型类中需要采用什么不同的属性我采用了 HttpPostedFileBase 类型的单个变量 Attach 模型类
public class Ipcell
{
public string CaseId { get; set; }
public HttpPostedFileBase Attach { get; set; }
}
视图是一个局部视图,其中文件上传按钮除了其他值之外可用,并且在底部给出了提交按钮。附加多个文件后,然后单击提交按钮,该局部视图中的所有值以及不同的附件应保存在数据库中,即表的blob类型列中的附件。
@model Smart.Models.Ipcell
<div>
<div> caseid<input id="Rcid" type="text" value="@Model.CaseId" /></div><br />
<div>attachment<input id="Rattc" type="file" style="margin-left:7%;padding-left:30%;"/></div><br />
<input id="Rsub" type="submit" />
</div>
点击“RSub”时,数据应通过控制器使用 jquery ajax 保存到数据库。 jquery端
$(document).on("click", '#Rsub1', function (e) {
var casedetail42={};
var casedetail42s=[];
casedetail42["CaseId"] = $('#Rcid').val();
casedetail42["Attach1"] =$('#Rattc').prop('files')[0];
casedetail42s.push(casedetail42);
$.ajax({
type:"POST",
url:"/Home/RaisePReq",
data:JSON.stringify(casedetail42s),
contentType:"application/json; charset=utf-8",
datatype:"json",
success:function(r){
alert(r);
},
});
});
控制器端,在控制器端我没有在流 fs 中得到任何值
[HttpPost]
public JsonResult RaisePReq(List<Pcell> casedetail42)
{
Byte[] bytes = null;
Stream fs = casedetail42[0].Attach1.InputStream;
BinaryReader br = new BinaryReader(fs);
bytes = br.ReadBytes((Int32)fs.Length);
try
{
conn.Open();
string qry1_1 = "query for insert file upload value in a column with blob format"
OracleCommand command = new OracleCommand(qry1_1, conn);
command.Parameters.Add(":IBD_ATTACHMENTS", bytes);
int insertedRecords = command.ExecuteNonQuery();
return Json(insertedRecords);
}
}
如何实现它任何想法将不胜感激。
【问题讨论】:
-
你需要检查这个链接c-sharpcorner.com/blogs/…这是使用ajax + MVC上传多个文件的完美例子
-
@PurveshPatel 我想以 blob 数据类型格式存储多个文件。
-
你到底在哪里坚持这个?你做过研究或尝试过吗?
-
@ADyson 我不知道单击文件上传按钮如何附加多个文件,然后从 ajax 我将如何将这些文件发送到控制器,控制器将其存储在表的列中在 Blob 类型中。我需要语法。
标签: c# jquery asp.net ajax asp.net-mvc