Софтуерно Инженерство
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
GeorgeF avatar GeorgeF 1 Точки

Здравей колега, 

Аз мисля, да правя подобен проект с обработка на файлове. Мислих си за вариант да бъдат изпращани на Shared Platform акаунт на предпологаемия потребител - Google Drive, Amazon Drive, Dropbox etc или директно опция да се свалят на local PC-то. Но не съм сигурен дали ще успея да го направя. Та си мислих за алтернативен вариант да пращам обработения файл по емайл. Все още мисля за други варианти, освен ефтин hosting с много GB.

0
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Привет,

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

Искаш ли файловете да се намират по име на файл през 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 SoftUni Team Trainer 6845 Точки

Привет,

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