Професионална програма
Loading...
Panda avatar Panda 2 Точки

Upload, Edit на файлове в ASP.NET CORE проект

Здравейте колеги, значи наскоро започнах един личен ASP.NET core проект и стигнах до един проблем. Приложението работи, или по скоро трябва да работи, с файлове, качва архив, резархивира на файловата система, обработва ги и ги връща като архив на потребителя при заявка. Бих искал обаче да пазя файловете. Въпросът ми е къде да съхранявам файловете, като се има предвид, че използвам (layered architecture) и със сигурност няма да ги съхранявам в ".Web" проекта и файловете не са за всеки (няма да ползвам "static files").

Тагове:
0
C# MVC Frameworks - ASP.NET 17/07/2018 14:18:22
RoYaL avatar RoYaL Trainer 6847 Точки

Привет,

Имаш няколко варианта, пак зависи и какво искаш да постигнеш.

Искаш ли файловете да се намират по име на файл през URL и да са публични за всички?

Ако да, качвай ги там, където е публичната част на IIS сървъра или пусни друг web server (e.g. nginx), който да сервира само статичното съдържание и качвай в неговия Document Root

Ако не, а ще се намират по примерно "/MyFiles?id=4", то ги съхранявай на директория, която не е в публичния сектор на web server-a и ги извличай посредством четене на файл през твоето приложение. Например в базата данни пазиш кое е името на file_id=4, а от там в твоя слой на услугите знаеш как да прочетеш файл по име от директорията, в която качваш.

Винаги е вариант, разбира се, да се възползваш от някой cloud, както е написал колегата по-горе. Amazon S3 са много стабилна такава услуга. Разбира се, може да използваш и нещо по-малко enterprise като pCloud.

0
Panda avatar Panda 2 Точки

Здрасти,

Нека да кажем, че искам да ги извличам посредством четене на файл през моето приложение, тогава в какъв проект мога да ги съхранявам, "Class Library(.NET Standard)" или има нещо което повече подхожда за случая. Не съм сигурен дали ще има проблеми след като проекта се хостне, нали "class library" е всъщност "dll" и не ми е ясно дали съдържанието на "dll" може да се променя докато се използва апликацията (Edit, Update на файлове).

П.С. Благодаря за предишния отговор

0
RoYaL avatar RoYaL Trainer 6847 Точки

Привет,

DLL ще ти е service layer-a, в който ти е C# кода, с който качваш и модифицираш файлове. Например FileService. Файловете, които се качват са си с разширението, с което ги качват хората и в съвсем различна папка, например D:\\Uploads\\. Задачата на FileService ще е да:

void Upload(byte[]) - приема масива от байтове на файла, който се иска да бъде качен, изпратени по HTTP, и ги записва като SomeUniqueFileName.zip в D:\\Uploads\\

byte[] Get(string) - приема уникално име на файл, търси го в D:\\Uploads\\ прочита му съдържанието и го изпраща към този, който го е повикал, примерно Controller, който ще го stream-не към клиента с подходящите headers (e.g. Content-disposition)

void Edit(string, byte[]) - приема уникално име на файл и масив от байтове - съдържанието на файла изпратено по HTTP. Записва ги под получения първи аргумент в D:\\Uploads\\, като ефективно замества файл с такова име, който е съществувал преди.

0
Panda avatar Panda 2 Точки

Вече ми е ясно, благодаря ти колега :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.