Файловые службы
Управление файлами, сверхбольшие файлы для загрузки, поддержка серверной части для возобновления передачи, клиентский H5-загрузчик, поддержка одновременной загрузки нескольких файлов, поддержка возобновления передачи.
Использование
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddFileServices(opt => {
opt.DefaultScheme = "documents";//по умолчанию это схема обработки документов
opt.AddAuthenticationScheme(CookieAuthenticationDefaults.AuthenticationScheme);//имя схемы аутентификации
//правила именования новых файлов при сохранении
opt.RuleOptions = new Ufangx.FileServices.Models.FileNameRuleOptions()
{
Rule = Ufangx.FileServices.Models.FileNameRule.Custom,//пользовательское правило именования, необходимо предоставить пользовательский метод
Custom = originFileName => string.Format("{0:yyyyMMddHHmmss}_xx_{1}", DateTime.Now, originFileName),
Format = "xxx_{0:yyyyMMddHHmmss}"//эта конфигурация используется вместе с Rule=FileNameRule.Date, по умолчанию: {0:yyyyMMddHHmmss}
};
})
//схема обработки фотографий
.AddScheme("pictures", opt => {
opt.StoreDirectory = "wwwroot/pictures";//каталог хранения изображений, обычно не используется при использовании локальной файловой системы
opt.SupportExtensions = new string[] { ".jpg", ".png" };//поддерживаемые расширения
opt.HandlerType = null;//тип обработки файла после успешной загрузки, этот тип должен реализовывать интерфейс IFileHandler
opt.LimitedSize = 1024 * 1024 * 4;//максимальный размер файла в байтах
})
.AddScheme("documents",opt => opt.StoreDirectory = "wwwroot/documents")//схема обработки документов
.AddScheme<VideoService>(name:"videos",
storeDirectory:"wwwroot/videos",//каталог хранения видео, обычно не используется при использовании локальной файловой системы
supportExtensions: new string[] { ".avi", ".wmv", ".mpg", ".mpeg", ".mov", ".rm", ".swf", ".flv", ".mp4" }
LimitedSize:1024*1024*500)//схема обработки видео
//.AddLocalServices(o => o.StorageRootDir = hostEnvironment.ContentRootPath)//локальная файловая система, файлы находятся локально
//сервисы хранения Qiniu
.AddQiniuFileService(opt => {
opt.AccessKey = "";//
opt.SecretKey = "";
opt.BasePath = "";
opt.Bucket = "";
opt.Domain = "";
opt.ChunkUnit = Qiniu.Storage.ChunkUnit.U1024K;
opt.Zone = "ZoneCnEast";
});
//информация о возобновлении передачи по умолчанию хранится в кэше, через services.AddDistributedRedisCache настраивается кэш Redis для постоянного хранения
//или AddQiniuFileService<CustomResumableInfoService> или AddLocalServices<CustomResumableInfoService>, чтобы указать тип сервиса информации о возобновлении передачи
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//。。。。其他代码
app.UseFileServices("/FileServices");
//URL для загрузки файлов: /FileServices/uploader
//создание информации о возобновлении:
//GET /FileServices/uploader?fileSize=125829120&blobSize=4194304&blobCount=30&fileName=xxx.zip&fileType=xxxx
//request headers
//scheme:documents
//response
//{"index":0,"key":"информация о возобновлении"}
//получение информации о возобновлении:
//GET /FileServices/uploader?key=информация о возобновлении
//request headers
//scheme:documents
//response
//{"index":12,"key":"информация о возобновлении"}
//удаление информации о возобновлении:
//DELETE /FileServices/uploader?key=информация о возобновлении
//response
//true
//загрузка данных фрагментов
//POST /FileServices/uploader
//Form
//blobIndex:12 текущий индекс фрагмента
//key:информация о возобновлении
//Form.Files==1 должен быть один файл формы, представляющий текущий фрагмент данных
//request headers
//scheme:documents
//загрузить файл
//POST /FileServices/uploader
//Form.Files>0 должно быть более одного файла
//request headers
//scheme:documents
//。。。。другие коды
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )