我需要获取上载的PDF文档的页数。单击按钮有效,但不能转到控制器方法。
我的观点:
<div class="form-group">
<input type="file" id="fileupload" accept="application/pdf" />
<button type="button" onclick="pagecount()">Upload</button>
@Html.Label("Number Of Pages", htmlAttributes: new { @class = "control-label col-md-2" })
@ViewBag.pageCount
</div>
这是我的ajax脚本:
$(document).ready(function (e) {var frmData = null;
function pagecount() {
frmData = new FormData();
var totalFiles = document.getElementById("fileupload").files.length;
var file = document.getElementById("fileupload").files[0];
frmData.append("fileupload", file);
$.ajax({
url: '/ProductAPI/PageCount@*@Url.Action("PageCount", "ProductAPI")*@',
data: frmData,
type: 'POST',
async: true,
enctype: 'multipart/form-data'
});
}
});
这是我的控制器方法:
[HttpPost]
public void PageCount(FormCollection formCollection)
{
var file = Request.Files[0];
byte[] fileData = new byte[Request.Files[0].ContentLength];
PdfReader reader = new PdfReader(fileData);
ViewBag.pageCount = reader.NumberOfPages;
}
答案 0 :(得分:0)
请参考我的方法。
从pageCount()
中删除document.ready()
的javascript函数,因为您需要从外部范围调用它。
用错误的值添加contentType
和processData
。更新的功能
function pagecount() {
frmData = new FormData();
var totalFiles = document.getElementById("fileupload").files.length;
var file = document.getElementById("fileupload").files[0];
frmData.append("fileupload", file);
$.ajax({
url: '/ProductAPI/PageCount',
dataType: "json",
data:frmData,
contentType: false,
processData: false,
type: 'POST',
success: function (response) {
$('#pageCount').html(response);
},
});
}
点击按钮即可调用此javascript函数。
<button type="button" onclick="javascript:pagecount()">Upload</button>
在Mvc Action中,返回页数如下所示作为json对象
public JsonResult PageCount()
{
var file = Request.Files[0];
byte[] fileData = new byte[Request.Files[0].ContentLength];
PdfReader reader = new PdfReader(fileData);
return Json(reader.NumberOfPages);
}
在ajax的成功函数中更新视图
success: function (response) {
$('#pageCount').html(response);
},
这对我有用:)。谢谢