-
2006-01-15
通过SQL Server在服务器上存取文件 - [VFP&JSP]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://thornbird313.yourblog.org/logs/511359.html
前些天改公司的程序,发现员工基本资料表中的照片字段竟是字符型,只保存照片的路径。我们的程序一般是用远程桌面访问,或是把程序所在目录映射为本地盘并运行程序。这样一来,图片只能放在服务器上才能进行显示、打印,且如果采取映射本地盘的方式,每个客户端应该都必须映射为相同的本地盘(或者把照片放在程序所在目录下,保存相对路径)。于是我把照片字段改成text类型,把文件存储到数据库中,不过一个同事不同意我的做法,于是只好作罢。但后来我想到其实可以把照片“上传”到服务器上,需要使用时再“下载”到本地,然后数据库中保存文件在服务器上的实际路径。通过查资料,我知道了可以用 sp_makewebtask 存储过程把查询结果保存到服务器上,遗憾的是它是保存为网页的格式,而不能把文件照原样保存到服务器上。不过无所谓了,只要“下载”时再对文件结构进行分析就可以了,这样一来就可以实现“上传”的功能了。至于“下载”,可以用 BULK INSERT 语句来实现。
我的思路是这样的:把文件进行编码后保存到 SQL Server 的临时表中,然后执行 sp_makewebtask 存储过程保存文件;使用“上传”的文件时则可以用 BULK INSERT 语句把文件存入临时表中,然后再通过查询得到文件的全部内容,然后进行分析和解码后进行保存。上面两个步骤都需要有足够的权限。这就是我的 ServerFileAccess 类的基本思路,这个类主要有下面几个方法:
SetConnectString 设置连接字符串
SetConnectHandle 设置连接句柄
Connect 与 SQL Server 建立连接
Disconnect 断掉连接
UploadFile 把客户端的文件“上传”到服务器上
GetFileFromServer 获取服务器上的文件
GetUploadFileFromServer 获取之前“上传”到服务器上的文件
DownloadFile “下载”服务器上的指定文件到本地
DownloadUploadFile “下载”之前“上传”到服务器上的文件到本地
下面是 ServerFileAccess 类的代码及演示:ServerFileAccess.prg
DEFINE CLASS ServerFileAccess AS Custom PROTECTED ConnectString PROTECTED ConnectHandle PROTECTED Connected PROTECTED FLAG_START PROTECTED FLAG_END PROTECTED ROWTERMINATOR PROCEDURE Init THIS.ConnectString = "" THIS.ConnectHandle随机文章:
一段排列组合算法 2007-03-19HttpURLConnection应用示例 2006-11-23VFP编程访问WMI对象 2006-03-01用JAVA画个星条旗 2006-01-09文件枚举工具(二) 2005-12-11
收藏到:Del.icio.us





