【发布时间】:2019-04-24 12:36:06
【问题描述】:
我的目标是发送带有图像和附加信息的文件格式,例如 height 和 width。我不知道如何向文件表单对象添加一些自定义道具。
$("#saveImg").on('click', function () {
var formData = new FormData(),
allFiles = [];
$('input[name=fileUpload]').each(function (index) {
if (inputFileValidation(this)) {
(function (files) {
if (files.length != 0) { allFiles.push(files[0]); }
})(this.files)
}
});
for (var i = 0; i != allFiles.length; i++) {
var img = new Image()
img.src = window.URL.createObjectURL(allFiles[i]);
$(img).on('load', function () {
formData.append("files_h", img.naturalHeight);
formData.append("files_w", img.naturalWidth);
formData.append("files", allFiles[i]);
window.URL.revokeObjectURL(allFiles[i]);
});
}
$.ajax({
url: '@Url.Action("Upload", "Image")',
data: formData,
processData: false,
contentType: false,
type: "POST",
success: function () {}
errors: function () {}
});
});
[HttpPost]
public async Task<IActionResult> Upload (IList<IFormFile> files)
{
//do something ;
}
我也试过了:
[HttpPost]
public async Task<IActionResult> Upload (IList<IFormFile> files, IList<IFormFile> files_h, IList<IFormFile> files_w)
{
//do something ;
}
也许您对如何发送带有附加数据的图像有其他想法?我尝试将文件格式和附加信息转换为 JSON,但没有成功。
编辑 谢谢大家的建议,它们对我来说真的很重要,因为我以后一定会用到它们。
然而,在这个项目中,我已经放弃了使用file reader,因为它的asynchrony 和promise 的乐趣。目标很简单,少javascript多c#
我很抱歉在标题 javascript 和jquery 中误导了您 - 我标记了与 c # 相关的答案。我这样做是因为这个答案与我的下一个任务有关,因为CoreCompat.System.Drawing 库对于将来编辑照片无疑仍然有用。
谢谢!!
【问题讨论】:
-
您的所有建议都需要使用
HttpContext.Current.Request.Files- 我的控制器不知道它是什么。我正在使用 asp core mvc 2,但找不到正确的using。 编辑: 更准确 - HttpContext 没有 Current。HttpContext来自ControllerBase.HttpContext -
你需要注册httpcontext并作为dependecy传递
标签: javascript c# jquery asp.net-core file-upload