Asp.net mvc 如何在发送文件后维护特定于供应商的内容类型?
将具有供应商特定内容类型的文件发送到应用程序时,您的内容类型将转换为不同的内容类型 问题:如何在上载/存储(Azure)/下载中保留原始内容类型。是否应该对Asp.net mvc 如何在发送文件后维护特定于供应商的内容类型?,asp.net-mvc,asp.net-core,content-type,Asp.net Mvc,Asp.net Core,Content Type,将具有供应商特定内容类型的文件发送到应用程序时,您的内容类型将转换为不同的内容类型 问题:如何在上载/存储(Azure)/下载中保留原始内容类型。是否应该对Startup.cs或Web.config进行任何更改(手动完成,但是否有效) 内容类型原件:应用程序/vnd.ms pki.stl 发送或自动绑定后的内容类型(我没有确定转换何时完成):应用程序/octet流 提交:表单通过Ajax发送 $.ajax({ url: url, data: new FormDat
Startup.cs
或Web.config
进行任何更改(手动完成,但是否有效)
内容类型原件:应用程序/vnd.ms pki.stl
发送或自动绑定后的内容类型(我没有确定转换何时完成):应用程序/octet流
提交:表单通过Ajax发送
$.ajax({
url: url,
data: new FormData($("#")[0]),
type: 'POST',
processData: false,
contentType: false,
beforeSend: function () {
// omitted
},
success: function (data) {
// omitted
},
error: function (data) {
// omitted
}
});
目标行动:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(PrintObjectCreateVM printObject)
{
if (!ModelState.IsValid)
{
return NotFound();
}
await PrintObjectService.Insert(printObject);
return Ok();
}
public class PrintObjectCreateVM
{
public IFormFile PrintObjectImage { get; set; }
public IFormFile PrintObjectPrintFile { get; set; }
}
当浏览器无法确定要上载的文件的内容类型(例如,从文件扩展名或操作系统键入信息推断)时,它默认为
application/octet-stream
对于下载,请在返回文件时手动设置内容类型
。如果框架无法识别任何客户端都应该能够处理的默认内容应用程序/octet流
比如说
[Route("api/[controller]")]
public class DownloadController : Controller {
//GET api/download/12345abc
[HttpGet("{id}"]
public async Task<IActionResult> Download(string id) {
var stream = await {{__get_stream_here__}}
var response = File(stream, "application/vnd.ms-pki.stl"); // FileStreamResult
return response;
}
}
[路由(“api/[控制器]”)]
公共类下载控制器:控制器{
//获取api/下载/12345abc
[HttpGet(“{id}”]
公共异步任务下载(字符串id){
var stream=await{{{{uuuuu get{u stream}
var response=File(流,“application/vnd.ms pki.stl”);//FileStreamResult
返回响应;
}
}
显示url正在调用的目标操作。您需要在控制器操作的响应中设置它。@Nkosi添加了操作和模型,可能可以下载,但在上传时,我需要检查应用程序是否接受该内容类型。@Ricardo我仍在搜索,但暂时看看这个。看起来是什么似乎上传文件的浏览器无法识别文件的自定义供应商mime类型。@Ricardo发现了一些有希望的东西。请尝试在输入标记上设置类型,例如
参考,以了解有关如何设置的详细信息it@Ricardo,我创建了一个小项目,并使用已知和未知的文件类型对其进行了测试g已知类型内容类型由浏览器正确设置,未知的内容类型设置为application/octet stream
。这表明它依赖于客户端,不在您的控制范围内。我理解,因此在将其发送到服务器之前,我将使用此插件验证浏览器的格式,谢谢!