当前位置: 首页 > 互联网 > 正文

网站应用中的文件处理

在网站应用中,我们往往将简单的信息存储在数据库中,而像图片,音频,视频之类的文件存储到数据库有诸多不变。如果存储到数据库一来会急剧增加数据库的容量大小,二来存储和读取时都需要进行格式的转换,浪费服务器处理资源。而将文件单独存储或有专门的文件服务器以及与之对应的目录地址管理,就可以很方便对网站上的文件进行存储管理,直接读取文件也变得更加的快速和便捷。当然,上传到服务器文件还是需要维护文件的目录的地址,以便正确定位。因而,在网站迁移或文件移动时可能需要批量更新目录地址,从而才能准确定位到相应的文件。

上传文件。文件一般由用户网页的FORM表单提交,带文件上传FORM的enctype值必须设置成:multipart/form-data。否则文件信息就无法提交。在一般的ASP.NET表单提交时可直接通过Request.Files[“name”]得到HttpPostedFileBase对象file,将使用对象的保存方法,就能直接将文件保存到服务器的指定目录中:file.SaveAs(filePath); filePath就是其保存在服务器中的文件路径包括名称。而在ASP.NET MVC4 API中文件上传时,上述文件上传的处理可能有所不同。需要判断Post请求的内容是否是Mime Multipart Content。然后再异步读取各个部分内容的字符流进行组合,得到相应表单项的数值。如果得到的是文件流,将得到的字符流通过方法File.WriteAllBytes(newFileName, data);直接写入文件newFileName,其中data是获取到的文件字符流。至此文件上传的两种方式基本完成。

文件处理。有些时候,上传的文件并不能被马上使用,或者我们需要另外的文件处理来丰富我们的网站应用。比如,生成图像的缩略图显示在信息列表上,视频需要截图显示在未播放的视频控件上,而不是默认的统一图片等等。由于这类文件已在我们的服务器上,所以在我们的网站应用程序里,就可以将这些文件当做本地文件来处理。图像缩图可直接通过.NET的Graphics对象自定义大小,设置生成后图片的质量来生成缩图。而对于视频我们可以使用专门的视频处理程序来获取截图,甚至可设定截图的大小等等。FFmpeg软件就是一个很不错的处理工具,可处理包括avi,mov,mpg,mp4,flv等多种类型视频的截图,设置要截的图的时间点等等。这里只是简单的提供一个思路,网络上也有很多现成的代码,进行简单修改便可以直接使用,非常的方便。而最容易出错的就是网站迁移后,一旦我们的文件物理目录改变,或者网站文件的相对目录改变,我们就要修改对应数据库存储的文件地址信息,保证实际文件地址与记录地址的统一。

下载文件。文件下载一般通过浏览器自有机制进行处理。像图片之类,就是直接将图片的url地址放到img标签scr属性进行直接的显示。而诸如音频或视频可将其地址放到相应的播放器控件中,供用户点击收听或收看。或通过一个简单的链接进行文件的下载等等。相对于文件的上传与处理,文件下载就简单的多。

文件处理其实还有很多更深层的问题。比如,如何在网站上传中保证大文件的上传的成功,及上传的速度等等。这些也是文件处理的难点,这可能需要涉及组件的开发。在网站备份中要做好数据库与网站文件的多重备份等等。当然,简单的网站如能实现上述三方面简单的功能,就可以满足处理一般的网站文件啦。

本文固定链接: http://www.byhard.com/?p=1285 | 海纳百川

该日志由 byhard 于2015年01月06日发表在 互联网 分类下,
原创文章转载请注明: 网站应用中的文件处理 | 海纳百川
关键字: ,
【上一篇】
【下一篇】

网站应用中的文件处理:目前有4 条留言

  1. 板凳
    flash教程:

    文件通常上传到指定目录下,在数据库中添加个文件路径。。

    2015-01-07 11:42
    • byhard:

      可以有个统一的文件表进行管理起来。

      2015-01-07 14:56
  2. 沙发
    久发网:

    初来乍到,踩一下很有必要!

    甲午年(马)冬月十八 2015-1-8

    2015-01-08 12:22
    • byhard:

      Welcoming.

      2015-01-08 15:54