aspnetboilerplate.net core,多页面 Web 应用程序 V8.1.0 文件上传。使用 ASP.NET Boilerplate 的文件上传功能时,需要使用 ASP.NET Core 和 AngularJS。
C# 代码示例:
// 定义文件上传服务接口
public interface IFileUploadService
{
Task
// 实现文件上传服务 public class FileUploadService : AbpServiceBase, IFileUploadService { private readonly IFileStorage _fileStorage;
public FileUploadService(IFileStorage fileStorage)
{
_fileStorage = fileStorage;
}
public async Task UploadAsync(FileUploadInput input)
{
var file = input.File;
// 将文件存储在磁盘上
var url = await _fileStorage.SaveAsync(file.OpenReadStream(), file.FileName);
return new FileUploadOutput
{
Url = url,
FileName = file.FileName,
FileType = file.ContentType,
FileSize = file.Length
};
}
}
AngularJS 代码示例:
// 定义文件上传控制器 app.controller('FileUploadController', [ '$http', 'abp.services.app.fileUpload', function ($http, fileUploadService) { var vm = this;
// 定义上传文件
vm.file = null;
// 提交表单时上传文件
vm.upload = function () {
if (vm.file) {
fileUploadService.upload({
file: vm.file
}).then(function (result) {
// 文件上传成功
console.log(result);
});
}
};
}
]);
// 定义文件选择指令 app.directive('fileSelector', function () { return { restrict: 'EA', scope: { onSelect: '&' }, link: function (scope, element) { // 监听文件选择事件 element.bind('change', function () { var files = element[0].files; if (files.length > 0) { // 将选中文件传递给 onSelect 处理函数 scope.onSelect({ file: files[0] }); } }); } }; });
// 定义文件上传组件 app.component('fileUpload', { templateUrl: '/app/shared/components/file-upload/file-upload.html', bindings: { onUpload: '&' }, controller: 'FileUploadController' });
HTML 代码示例: