如何将pdf文件传递给需要IFormFile的控制器



我一整天都在做这件事,而且已经做了研究,但我似乎找不到解决方案。我有这个函数在我的控制器中调用List, List需要一个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);
}
});
}

这是我在控制器

中的List
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)

最新更新