C# 在同一个API调用c中上载文件和数据#
在做了大量的研究之后,我发布了这个问题,因为我自己都搞不懂 该场景是,我需要将以下参数传递到C# 在同一个API调用c中上载文件和数据#,c#,file-upload,asp.net-web-api2,multipartform-data,form-data,C#,File Upload,Asp.net Web Api2,Multipartform Data,Form Data,在做了大量的研究之后,我发布了这个问题,因为我自己都搞不懂 该场景是,我需要将以下参数传递到.Net framework 4.8中的webapi 2控制器中的HttpPost请求: 日期->日期对象 作者->字符串 标题->字符串 内容->字符串 图像->文件对象 我的前端角度代码是: saveNewsArticle(data) { return new Observable(observer => { let apiStr = this.apiStrBase +
.Net framework 4.8
中的webapi 2控制器中的HttpPost
请求:
- 日期->日期对象
- 作者->字符串
- 标题->字符串
- 内容->字符串
- 图像->文件对象
我的前端角度代码是:
saveNewsArticle(data) {
return new Observable(observer => {
let apiStr = this.apiStrBase + "SaveNewsArticle";
let formData = new FormData();
formData.append('date', data.publishDate);
formData.append('author', data.author);
formData.append('title', data.title);
formData.append('image', data.image);
formData.append('content', data.content);
this.httpClient.post(apiStr, formData).subscribe((result) => {
observer.next({ result: true, data: result });
},
error => {
observer.next({ result: false });
}
);
});
}
我的C#代码是:
所有这些都很好,但是,我正在使用一个所见即所得编辑器来获取文本的样式,因此内容是html
,例如,这是我的内容,我在c#中得到了这个错误:
以下是我迄今为止所尝试的:
我不想使用
我可以将其作为模型传递public void SaveArticle(Article-Article)
这使得一切都很好,但图像总是null
我可以替换”,这就解决了问题
对我来说,但这不是应该怎么做的。这是一个黑客
在MVC中,我们可以使用[ValidateInput(false)]
或[allowtml]
但是不能在WebAPI 2
上使用它
我应该实现一个自定义格式化程序来处理多部分/表单数据吗
非常感谢您的帮助/指导。向控制器提交HTML代码的其他方法如下
提交为基本64字符串
作为HTML编码字符串提交
就我个人而言,我认为Base64更简单,在哪里呢
JavaScript(编码)
formData.append('content',btoa(data.content));
C#(解码)
var content=Encoding.UTF8.GetString(Convert.FromBase64String(HttpContext.Current.Request.Params[“content”]);
你能分享文章
类的代码吗?如果您使用文章
作为Post Body in Action方法,您将如何访问图像
?这是否回答了您的问题?这与我在场景中描述的参数相同begining@ChetanRanpariya您建议的答案使用ifformfile
,它是.NetCore
的一部分,我使用的是.netframework
。请不要投票结束这个答案。如果这么简单,我一开始就不会发布这个问题。@CodeWarrior这是你收到的唯一例外消息吗?关于危险表单数据的一行?或者它是在告诉您没有合适的MediaTypeFormatter
?你能上传图片吗?如果没有,那么就有一个关于多部分/表单数据的配置或格式化程序问题
[HttpPost]
public void SaveNewsArticle()
{
var date = HttpContext.Current.Request.Params["date"];
var author = HttpContext.Current.Request.Params["author"];
var title = HttpContext.Current.Request.Params["title"];
var content = HttpContext.Current.Request.Params["content"];
var image = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;
}
System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client