如何解决如何将pdf文件传递给需要IFormFile的控制器
我已经为此工作了一整天并且已经进行了研究,我似乎无法在任何地方找到解决方案。我有这个函数在我的控制器中调用一个列表,列表需要一个 IFormFile 参数, 这是我的 javascript 方法
function fileUploader_uploaded(e) {
const file = e.file;
const fileReader = new FileReader();
fileReader.onload = function () {
toggleDropZoneActive($("#dropzone-external")[0],false);
$("#dropzone-item")[0].data = fileReader.result;
}
fileReader.readAsDataURL(file);
const _fileReader = new FileReader();
var r = _fileReader.readAsBinaryString(file);
$("#dropzone-text")[0].style.display = "none";
$.ajax({
url: '@Url.Action("_Index","FileUploader")',data: { CFile: r},// I'm trying to pass the pdf file here
cache: false,success: function (data) {
console.log(data);
}
});
}
这是我在控制器中的列表
public object _Index(IFormFile CFile)
{
if (CFile != null)
{
try
{
string documentText = "";
using PdfDocumentProcessor documentProcessor = new PdfDocumentProcessor();
documentProcessor.LoadDocument(CFile.OpenReadStream());
documentText = documentProcessor.Text;
string word = @"([0-9]+.[0-9]+-[0-9]+)";
Regex regex = new Regex(word);
foreach (Match match in regex.Matches(documentText))
{
sectionsList.Add(match.Value.ToString());
}
}
catch
{
Response.StatusCode = 400;
}
}
else
{
_logger.Loginformation("empty");
}
return sectionsList;
}
CFile 总是空的,我已经尝试过不同的方法,比如传递
data: { CFile: e.file}
还有人知道吗?
解决方法
从这段代码 data: { CFile: e.file}
中,您将其作为字符串发布,因此无法将其识别为文件。您需要使用 FormData
并更改 contentType。
function fileUploader_uploaded(e) {
const file = e.file;
const fileReader = new FileReader();
fileReader.onload = function () {
toggleDropZoneActive($("#dropzone-external")[0],false);
$("#dropzone-item")[0].data = fileReader.result;
}
fileReader.readAsDataURL(file);
const _fileReader = new FileReader();
var r = _fileReader.readAsBinaryString(file);
$("#dropzone-text")[0].style.display = "none";
//----------edit here---------
var form = new FormData()
form.append('CFile',file)
$.ajax({
url: '@Url.Action("_Index","FileUploader")',method:'post',data: form,cache: false,contentType: false,processData: false,success: function (data) {
}
});
}
面包应该添加[FromForm]
。
[HttpPost]
public object _Index([FromForm]IFormFile CFile)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。