最近遇到一个问题,需要把本地的word文档通过网页上传到远程数据库保存,而且还得可以从数据库读出来。首先想到三个步骤,从本地提交文件到远程,在远程报文件保存到数据库,从数据库读出文件内容并打开。
先说提交文件,就是在静态页上用表单选择本地文件提交给动态页,也就是用input标签,当type为file时的文件上传,具体写法如:
<form id="form1" action="input.aspx" method="post" enctype="multipart/form-data">
<input type="file" name="file5" id="file1"/>
<input id="submit" type="submit" value="post" />
</form>
这里用post方法把文件上传到input.aspx的页面上,这里动态页用了ASP.NET的页,最重要的是不要忘记加上enctype属性,不加此属性的话是不会执行上传动作的。本人就是在试验了半个小时后才发现必须加上这个属性。
第二步,从aspx把文件保存到数据库。要保存文件数据库的相应字段得是binary类型,而且得把上传的文件转换成byte型数组才能保存。在input.aspx页上,可以用Request.Files[n]来获取所上传的文件
返回类型是HttpPostedFile,在这个类中可以同过InputStream属性获得文件的输入流,再用BinaryReader类从流中获取byte数组,这是最复杂的部分,代码却是挺少的,获取byte后剩下的就是正常的数据库操作了,此步代码如下:
try
{
Response.Clear();
&
先说提交文件,就是在静态页上用表单选择本地文件提交给动态页,也就是用input标签,当type为file时的文件上传,具体写法如:
<form id="form1" action="input.aspx" method="post" enctype="multipart/form-data">
<input type="file" name="file5" id="file1"/>
<input id="submit" type="submit" value="post" />
</form>
这里用post方法把文件上传到input.aspx的页面上,这里动态页用了ASP.NET的页,最重要的是不要忘记加上enctype属性,不加此属性的话是不会执行上传动作的。本人就是在试验了半个小时后才发现必须加上这个属性。
第二步,从aspx把文件保存到数据库。要保存文件数据库的相应字段得是binary类型,而且得把上传的文件转换成byte型数组才能保存。在input.aspx页上,可以用Request.Files[n]来获取所上传的文件
返回类型是HttpPostedFile,在这个类中可以同过InputStream属性获得文件的输入流,再用BinaryReader类从流中获取byte数组,这是最复杂的部分,代码却是挺少的,获取byte后剩下的就是正常的数据库操作了,此步代码如下:
try
{
Response.Clear();
&