我们都知道,一般客户端文件上传服务器有两种方法:HTTP上传和FTP上传两种。两种上传方式以捷易拍SDK为例:
1.HTTP上传:
/*************************************************************************/
BOOL bUpLoadImage(LPCTSTR fileName, LPCTSTR serverName,
short usPort, LPCTSTR objectName)
/*************************************************************************/
* 函数名称: bUpLoadImage
* 功能描述:上传指定图片到服务器
* 输入参数: fileName——上传图片的完整路径(多文件上传时,用“|”隔开)
serverName——服务器地址(IP、域名)
usPort——端口
objectName——处理图片上传的服务器对象
(文件请求字段名称:trackdata)
* 输出参数:无
* 返回值: TRUE——成功
FALSE——失败
* 例如:
单文件上传:m_cap. bUpLoadImage ("D:\\JPG.JPG", "127.0.0.1",
8080, "/shop/servlet/uploadServlet");
多文件上传:m_cap. bUpLoadImage ("D:\\JPG.JPG|D:\\JPG1.JPG|D:\\JPG2.JPG",
"127.0.0.1", 8080, "/shop/servlet/uploadServlet");
/*************************************************************************/
short iUploadFileToFtp(LPCTSTR host, LPCTSTR port,
LPCTSTR userName, LPCTSTR password,
LPCTSTR filePath, LPCTSTR ftpPath, LPCTSTR fileName)
/*************************************************************************/
* 函数名称: iUploadFileToFtp
* 功能描述:上传文件到 FTP
* 输入参数: host——服务器地址(IP 或域名)
port——端口
userName——用户名
password——密码
filePath——文件路径
ftpPath——服务器路径
fileName——存放服务器的文件名
* 输出参数:无
* 返回值: 0——成功
1——失败
* 例如: m_cap. iUploadFileToFtp (“192.169.0.11”,”21”,
”name”,”password”,”c:\boot.ini”,”/FTPPath/temp”,”boot.ini”);
由于在扫描设备上使用的是捷易拍设备,选择了有关于捷易拍sdk开发中HTTP上传方式:
function upload() {
capture = byId("capture");
var port;
if (location.port != "") {
port = location.port;//端口
} else {
port = 8080;//端口
}
imgPath = GetScanPath();
var re=capture.bUpLoadImage(imgPath, location.hostname, port, "/Web/PostFile.aspx");
alert(re);
}
但是在IE调试过程中出现“超出当前范围”错误,如下,字符10的位置是capture,google了各种找不到原因,还是心情烦躁啊,静下心来或许能找到解决办法。
于是改用捷易拍给的功能测试文件HTML进行测试,查找到asp.net的服务器端口号为32910,设置后同样的问题。好吧。。。。先记录下来,放在那边做做其他事。一天早上,突然来了个灵感,超出范围,可能是端口超出范围,难不成这端口还有范围,官方文档没提啊,,于是我尝试着修改asp.net的服务器端口,改为8989:
没想到尝试居然成功了,多次试验,发现,捷易拍SDK的HTTP上传文件到服务器的端口一般小于5位数,还有这么一隐藏要求,我能说是bug吗。
告一段落。。。。
总结:有的时候,遇到难啃的骨头的时候,适当的记录,留下记忆,暂时的放一放,是为了柳暗花明又一村。