我有以下标记:
<form id="did" enctype="multipart/form-data">
<textarea name="description">Text</textarea>
<input name="files" id="files" type="file" accept="doc,pdf" />
...
</form>
在控制器中它是这样的:
public int Edit_Submit(FormCollection oForm)
{
var attachedFiles = oForm["files"];
var description= oForm["description"];
....
}
我通过jQuery
发布表单,如下所示:
var formInfo = $("#did").serialize();
$.post('../../data/SubmitEdit', formInfo, function (serverResult) {
...
我正在接收其他数据,但null
中始终attachedFiles
。
通过这种方式不可能吗?我做错了什么,请帮忙。
答案 0 :(得分:0)
我认为您上传的文件不在您的表单集中。
尝试类似这样的事情:
<form id="did" action="../../data/SubmitEdit" enctype="multipart/form-data">
<textarea name="description">Text</textarea>
<input name="files" id="files" type="file" accept="doc,pdf" />
...
</form>
[HttpPost]
public ActionResult SubmitEdit(FormCollection oForm, HttpPostedFileBase files) {
...
确保HttpPostedFileBase
名称与id
input[type="file"]
相同
答案 1 :(得分:0)
$.post()
方法本质上是一个ajax调用,或者在更多技术术语中,使用XMLHttpRequest
对象。
通过XMLHttpRequest
对象,您无法将文件流发送回服务器。虽然有一些方法可以模仿。
此外,在服务器端,您应该使用HttpPostedFileBase
类来将文件流恢复到服务器。