我想上传包含一些文字的文件(可能是.csv
,.txt
,.xls
等),我希望文档能够由C#处理。我在前端使用Angular JS而在WebAPI使用C#。
我需要帮助如何将文件上传到C#?
我试过了:
在C#WebAPI控制器中:
[HttpPost]
[Route("api/GetCalimCsv")]
public string GetCalimCsv(dynamic content)
{
return content;
}
获得空值。
在角度控制器中:
$scope.fileNameChanged = function (ele) {
var formData = new FormData();
formData.append('claim', ele.files[0]);
$http({
method: 'POST',
url: '/api/GetCalimCsv/',
data: formData
}).then(function successCallback(response) {
alertify.success(response.data);
}, function errorCallback(response) {
alertify.error(response.status);
});
在CSHTML文件中:
<input ng-model="Claim" ng-required="true"
type="file" accept=".js, .css, .txt, .doc, .docx, .csv, .xls | text/*"
onchange="angular.element(this).scope().fileNameChanged(this)" />
文件输入期间的示例截图: JavaScript is getting the file name
答案 0 :(得分:0)
尝试使用如下指令
.directive('fileModel', ['$parse', function($parse) {
function fn_link(scope, element, attrs) {
var onChange = $parse(attrs.fileModel);
element.on('change', function (event) {
onChange(scope, { $files: event.target.files });
});
};
return {
link: fn_link
}
}])
然后将input type = file替换为
<input type="file" id="fileId" file-model="myFiles($files)"/>
然后在您的控制器中添加此
var formData = new FormData();
$scope.myFiles = function($files) {
formData.append('img', $files[0]);
}
替换&#39; img&#39;到后端需要的名称 如果您想添加内容,请使用formData中的键添加每个值以发送 如
formData.append('title', form.title);
和你的$ http方法
$http.post('YOUR SERVER API URL', formData)