本文通过SATRDA组件几句代码实现文件的http上传和下载,SATRDA提供了文件上传下载功能,包括服务器和客户端的实现。
1. 首先下载SATRDA
加QQ群:345559891 下载最新版本,里面有pb相关demo
2.运行satserver.exe, 完成http服务的启动
3.在server目录下面建立public文件夹,在public文件夹下建立自己目录的文件夹,如file,用于文件上传
准备工作就完成了,上传下载可以参考下文件里面的pb示例.
上传文件代码
long ll_rtn,ll_http
String ls_path
blob lb_filename,lb_key
blob{1} lb_null
String ls_filekey,ls_md5
//如果后台文件密钥设置了值,指定ls_filekey的值
//ls_filekey = "cc12345678901234"
ls_path = "d:/111.txt"
lb_filename = n_api.of_toutf8("file/中文名.jpg")
ll_http = n_api.SATHTTP_Create()
//设置连接超时时间5秒
n_api.SATHTTP_SetOption( ll_http,n_api.SATOPT_CONNECTTIMEOUT , 5000)
//设置选项,10秒内速度低于1字节/秒会超时
n_api.SATHTTP_SetOption( ll_http,n_api.SATOPT_LOW_SPEED_LIMIT , 1)
n_api.SATHTTP_SetOption( ll_http,n_api.SATOPT_LOW_SPEED_TIME , 10)
//服务端设置了文件密钥,需要用密钥签名,算法md5(文件名+密钥)
if ls_filekey <> "" then
lb_key = lb_filename + n_api.of_toutf8( ls_filekey)
ls_md5 = n_api.satrda_md5( lb_key, len(lb_key))
n_api.SATHTTP_SetHeader( ll_http, "keysign", ls_md5)
end if
lb_filename = lb_filename + lb_null
n_api.SATHTTP_AddFormFile( ll_http,ls_path, lb_filename)
ll_rtn = n_api.SATHTTP_PostForm(ll_http,"http://127.0.0.1:5555/upload/file.go")
n_api.SATHTTP_Destroy(ll_http)
if ll_rtn = 200 then
messagebox("","成功!")
else
messagebox("",ll_rtn)
end if
下载文件代码
long ll_rtn,ll_http
String ls_rfile,ls_filename
blob lb_b
lb_b = n_api.of_toutf8( "中文名.jpg")
ls_filename = n_api.SATHTTP_UrlEncode( lb_b, len(lb_b))
ls_rfile = "http://127.0.0.1:5555/file/" + ls_filename
ll_http = n_api.SATHTTP_Create()
ll_rtn = n_api.SATHTTP_GetFile(ll_http,ls_rfile,"d:/11.jpg")
n_api.SATHTTP_Destroy(ll_http)
if ll_rtn = 200 then
messagebox("","成功!")
else
messagebox("",ll_rtn)
end if