/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
back/Services/ImageService.cs
81 строка
2 KB
atikinvobud
Get-запрос, который по id города, возвращает все достопримечательности
13 мар 2025, 22:43
13 мар 2025, 22:43
b2e687a
Код
Авторство
О чём код?
using back.DTOs.FilesDTOs; using Microsoft.AspNetCore.Mvc; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.GridFS; namespace back.Controllers; public class ImageService { private readonly MongoDbContext _mongoContext; public ImageService(MongoDbContext mongoContext, IMongoClient mongoClient) { _mongoContext = mongoContext; } public string UploadFile(FileUploadDto fileUploadDto) { if (!System.IO.File.Exists(fileUploadDto.FilePath)) { return "-1"; } var gridFs = _mongoContext.GridFsBucket; using (var stream = new FileStream(fileUploadDto.FilePath, FileMode.Open, FileAccess.Read)) { string fileName = Path.GetFileName(fileUploadDto.FilePath); GridFSUploadOptions options = new GridFSUploadOptions { Metadata = new BsonDocument { { "originalPath", fileUploadDto.FilePath }, { "uploadDate", DateTime.UtcNow } } }; var fileId = gridFs.UploadFromStream(fileName, stream, options); return fileId.ToString(); } } /* public FileStreamResult GetImage(string id) { ObjectId objectId = ObjectId.Parse(id); var gridFs = _mongoContext.GridFsBucket; var filter = Builders<GridFSFileInfo>.Filter.Eq(info => info.Id, objectId); var fileInfo = gridFs.Find(filter).FirstOrDefault(); var memoryStream = new MemoryStream(); gridFs.DownloadToStream(objectId, memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); string contentType = GetContentType(fileInfo.Filename); return new FileStreamResult(memoryStream, contentType) { FileDownloadName = fileInfo.Filename }; }*/ public string GetImage(string id) { return $"http://localhost:5216/test/images/{id}"; } public string GetContentType(string fileName) { var extension = Path.GetExtension(fileName)?.ToLowerInvariant(); return extension switch { ".jpg" or ".jpeg" => "image/jpeg", ".png" => "image/png", ".gif" => "image/gif", ".bmp" => "image/bmp", ".svg" => "image/svg+xml", ".webp" => "image/webp", _ => "application/octet-stream", }; } }