сохранять файлы на стороне сервера - лучшая практика - PullRequest
0 голосов
/ 19 сентября 2011

в моем приложении asp .net Я использую сущность, полученную из базы данных (сущность «Продукт»). Сущность среди различных полей требует 3 поля изображения.

Я загружаю эти файлы изображений, используя FileUpload, я хотел бы добавить объект в контекст (Entity Framework) после того, как iv'e добавил 3 изображения в него.

  context.AddToProduct(Product);    

Мне было интересно, как лучше сохранить эти файлы перед отправкой

т.е.

я получил 3 байта [] массивов, которые необходимо сохранить для загрузки определенного продукта на сайт.

Я подумал о создании каталога на стороне сервера с именем продукта, и позже, когда все учетные данные продукта будут отправлены, упакуйте их вместе с изображениями в объект продукта и сохраните в модели объекта.

Я ищу более asp. Net своего рода способ кеширования их и извлечения их при необходимости.

любые идеи.

вот пример для одного изображения, загруженного для продукта

           byte[] imageSize = new byte[FileUpload1.PostedFile.ContentLength];
           HttpPostedFile uploadedImage = FileUpload1.PostedFile;
           uploadedImage.InputStream.Read(imageSize,0,(int)FileUpload1.PostedFile.ContentLength);
           MyProduct product = new MyProduct()
           {
               Image = imageSize,
               Date = DateTime.Now,
               State = 1,
               Short = "short discription",
               Long = "long.......................",
               Title = "Some Title",
               Price = (float)11.1,
               OwnerID = int.Parse(Response.Cookies["user"]["id"]),                        
           };    

дальше больше, если я сохраню для Session ["file1"] Session ["file2"] Session ["file3"], но это может вызвать проблемы с производительностью, если множество пользователей пытаются загрузить изображения для этих файлов.

1 Ответ

1 голос
/ 19 сентября 2011

Если вы сохраняете в сеансе, доступ к нему будет иметь только пользователь, который запустил сохранение изображения. Все другие пользователи будут иметь свой Session ["file1"] с другим (или нулевым) значением, так как сеанс отличается.

Я использую это для сохранения изображений в базу данных. Мне нравится этот подход, потому что таким образом нет «внешних зависимостей», то есть путей, которые могут быть нарушены.

Сохранение изображения в сеансе позволит вам кэшировать его только для одного пользователя. Сохранение его в серверной переменной позволит любому получить его (только будьте осторожны, чтобы не перегружать ОЗУ изображениями)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...