asp.net-core - 如何将 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);
}
});
}
这是我在控制器中的列表
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)
推荐阅读
- django - 密码错误的 Django 管理员锁定时间
- php - Twitter 使用 php 错误 400 错误请求和浏览器登录 {"code":215,"message":"Bad Authentication data."}
- python-3.x - 是否可以在 Python 中向字典添加新键,然后将键保存到文件中以备后用?
- python - 以元组为值按值对字典进行排序
- ios - 当我从 tableview 中删除行时,如何从 Firebase 中的数组中删除值?
- java - 在 SpringBoot 中使用重定向视图时如何隐藏查询参数?
- python-2.7 - 反向 geocding - geopy.Nominatim 模块引发 urlopen 错误 [SSL: UNKNOWN PROTOCOL]
- python - Python调用其他python函数错误?
- javascript - 数据库中的信息有多本地化?
- timer - STM32 定时器设置,用于去抖、短按和长按