在服务器端保存文件 - 最佳实践

时间:2011-09-19 01:04:42

标签: asp.net file-upload entity-framework-4

在我的asp .net应用程序中 我正在使用从数据库(“产品”实体)派生的实体。 不同领域之间的实体需要3个图像区域。

我使用FileUpload加载thous图像文件,我想在iv'e添加3个图像后将实体添加到上下文(Entity Framework)。

  context.AddToProduct(Product);    

我想知道在submition

之前保存这些文件的最佳做法是什么

即。

我有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 个答案:

答案 0 :(得分:1)

如果您保存在会话中,则只有触发图片保存的用户才能访问该图片。所有其他用户的会话[“file1”]将具有不同(或空值),因为会话不同。

我使用它的方法是将图像保存到数据库中。我喜欢这种方法'因为这种方式没有“外部依赖性”,即可能被破坏的路径。

将图像保存到会话中只允许您为一个用户缓存它。将它保存到服务器变量中,将允许任何人检索它(只是要小心不要使用图像重载RAM)