1.纵横HTTP上传组件常见问题汇总解答
-------- 你们产品在上传文件时,能不能上传到指定的文件夹中?
上传目录可以通过asp服务端脚本指定。服务端组件需要指定两个目录,一个临时目录,一个文件保存目录
-------- 临时目录可以指定吗?
可以。通过调用服务端组件的FileUploadObj.SetTempFileSavePath("c:/temp")完成设置。如果不设置,默认路径是c:/temp
(服务端在接收文件时需要一个临时目录,临时目录是上传过程中用来保存临时文件用的。)
-------
文件保存目录可以指定吗?
可以。通过调用服务端组件的FileUploadObj.SetSavePath("c:/temp")完成设置。这里要注意,一般临时目录和保存目录在同一个盘符下,这样可以减少系统开销
-------
上传时,有没有获取每个文件名的接口?
服务端com组件有专门的这种接口。获取文件名。获取文件大小等
--------
最多能上传多大的文件?
纵横HTTP文件上传组件支持大文件上传,并且传输多大都可以(为了不让页面执行超时,可以在UploadDeal.asp页面里设置server.ScriptTimeout属性)。同时也可以限制单个文件大小及一次传输总共文件大小。
--------
最多一次能上传多少个文件?
一次上传文件个数没有限定,如果要限制个数,组件有这种接口来限制个数
-------- 能否将文件名,文件保存路径保存到数据库?
可以。存数据库的工作只要在uploaddeal.asp里做就可以了。
--------
我上传成功的文件名怎么取得呢?
'根据field值得文件名
strFileName = FileUploadObj.GetUploadFileName(arrFileFieldList(i))
其中strFileName为返回的文件名。arrFileFieldList(i)是field名称。一个文件对应一个field
具体看例子代码UploadDeal.asp
--------
如何修改上传文件的文件名,我想把客户端上传上来的文件保存为指定的文件名,来避免文件名重复
strFileName = FileUploadObj.GetUploadFileName(arrFileFieldList(i))
'将文件从临时目录存放到保存目录
FileUploadObj.SaveFile arrFileFieldList(i), strFileName
其中strFileName为客户端上传上来的文件的原始名称。你可以通过处理strFileName,SaveFile 方法将把文件从临时目录存放到保存目录并把文件保存为你指定的文件名(strFileName)
--------
上传数据中能否绑定表单域的值?
可以。纵横HTTP文件上传组件采用HTTP协议传输,并且传输的格式和表单提交时的数据格式完全一样。如果要绑定form域的值,方法如下。
在upload.asp中,调用activeX的AddField方法(示例:UFileUploader.AddField('ID', 'ID VALUE'))添加一个表单域。服务端uploaddeal.asp页面中可以通过com组件的GetFormValue方法得域值。(示例:FileUploadObj.GetFormValue("ID"))
注意:FileUploadObj.GetFormValue必须得在uploaddeal.asp的beginupload后面调用
-------- windows 2003下 IIS 6.0上传文件尺寸太小解决办法
IIS 6 出于安全考虑, 默认最大请求200K(也即最大提交数据限额为200KByte, 204800Byte).
解决办法:
a. 关闭 IIS Admin Service 服务
b. 将IIS的Metabase数据库属性设为可编辑(打开IIS, 然后计算机名右键属性里设置)
c. 打开 \Windows\system32\inesrv\metabase.xml
d. 修改 ASPMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800(这个值不能设太大, 必须是个合法的值, 否则会失效)
e. 启动 IIS Admin Service 服务
修改工具下载地址:http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
-------- 试用版和正式版有什么区别?
试用版有些功能被限制,而且有使用时间限制,不提供组件升级
2.在使用上传组件的过程中发现组件不能正常上传,易犯的错误!
--------在编写服务端处理页面脚本时容易犯的错误(即例子程序中的UploadDeal.asp页面)
----------------A. nUploadResult = FileUploadObj.BeginUpload --- 这句话所放的位置
得表单域的值(GetFormValue), 得文件大小(GetFileSize), 得文件名(GetUploadFileName)这些方法的调用必须得放在BeginUpload后面, 得等BeginUpload执行完后调用, 否则得到的值都会为空
----------------B. SetTempFileSavePath的位置
SetTempFileSavePath必须得放在BeginUpload前. 放到后面就会不起作用
----------------C. SetSavePath的位置
SetSavePath放BeginUpload前面或者后面都可以. 设置的保存路径只有在调用SaveFile时会用到.
如果你想通过得客户端传过来的表单域的值来设置保存路径, 必须得注意以上A B C三点
-------- 上传文件时易遇到的问题
----------------在2003 server下. 在上传大文件时, 如果你发现上传到一个固定的大小后, 就会报与服务器连接被重置或者被中止之类的错误时.一般情况就是你ASPMaxRequestEntityAllowed没有设置而引起. 因为2003 iis6允许上传默认最大为200k你必须修改这个值. 具体修改方法见"纵横HTTP文件上传组件常见问题汇总解答"
----------------服务端总是保存不了文件. 只能看到临时文件. 出现这个现象一般情况就是你没有设置脚本超时属性. 设置方法:在服务端处理页面开始加上 server.ScriptTimeout = 48 * 60 * 60
3.如何在客户端与服务端之间传递参数
--------纵横HTTP文件上传组件采用HTTP协议传输,并且传输的格式和表单提交时的数据格式完全一样。如果要绑定form域的值,方法如下。
在upload.asp中,调用activeX的AddField方法(示例:UFileUploader.AddField('ID', 'ID VALUE'))添加一个表单域。服务端uploaddeal.asp页面中可以通过com组件的GetFormValue方法得域值。(示例:FileUploadObj.GetFormValue("ID"))
注意:
1. FileUploadObj.GetFormValue必须得在uploaddeal.asp的beginupload后面调用, 但是Settemppath可以在beginupload前面调用。SetSavePath可以在beginupload前面或者后面调用
2. uploaddeal.asp中不能使用Session变量,大家一定要注意。如果想传递变量就得通过以上这种方式
4.关于上传目录的权限
--------什么时候要设置权限呢?
当你上传的时候,界面上提示上传成功而上传目录下没有文件的时候,由于上传组件上传文件需要读写磁盘文件. 所以必须得对磁盘有读写权限.如果没有读写权限就会导致上传失败!
现以2003 server为例.
如:我想把文件上传到d:\website\upload目录下.
IIS用户及Users组要对 d:\website\upload 目录有读写权限, 还有创建目录的权限.

一定要有里面的来宾用户和Users组!
千万不要把Users组忘加进去!
5.如果组件已经在服务器端安装,但是创建对象失败,需要com+配置说明
如果发现组建已经在服务器端安装。但是创建对象失败。需要修改一下com+配置。
com+配置在控制面板->管理工具->组建服务
打开组建服务。展开树。找到UFileUpload。 右键属性。然后切换到“标识”页。
改成用指定用户方式启动。
截图:http://www.versalsoft.com/UploaderDemo/com+.gif
6.2003 Server IIS 6.0的用户上传必须做的设置
这里特别说明一点: 2003 server下必须得做一个配置
windows 2003下 IIS 6.0上传文件尺寸太小解决办法
IIS 6 出于安全考虑, 默认最大请求200K(也即最大提交数据限额为200KByte, 204800Byte).
解决办法:
a. 关闭 IIS Admin Service 服务
b. 将IIS的Metabase数据库属性设为可编辑(打开IIS, 然后计算机名右键属性里设置)
c. 打开 \Windows\system32\inesrv\metabase.xml
d. 修改 ASPMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800(这个值不能设太大, 必须是个合法的值, 否则会失效)
e. 保存metabase.xml。重启启动IIS
假如我想让用户一次上传的数据不超过1G。得将ASPMaxRequestEntityAllowed设为:
1024×1024×1024 = 1073741824
如果是asp.net还必须把web.config中增加
executionTimeout="300"
maxRequestLength="限制大小"
useFullyQualifiedRedirectUrl="false"/>
7.在Windows 2003 Server上时,文件始终无法上传到服务器的临时文件夹
同样的代码配置在XP的IIS下时能够顺利上传文件,但是配置在Windows 2003 Server上时,文件始终无法上传到服务器的临时文件夹。已经按照论坛中的方法配置了IIS6.0,依然不行,上传过程未报错
--------原因是加入从web.config中读取临时文件夹路径的功能。而在Windows 2003 Server下,默认不支持Server.MapPath("../web.config")的写法导致的
8.上传组件,在服务器端,要注册组件吗?
sp只要安装一下我们的安装包,并且把cab包copy到网站目录,客户端IE会自动安装。
PHP,JSP可以只装客户端
9.linux下为什么上传的中文名的文件保存的是乱码
设置charset属性来改变上传数据的编码方式。例如UTF-8编码。
属性值
字符串类型,查看下表相关charset的值. 默认是不指定编码方式
Remark
The table below contains some supported charsets.
Charset |
描述 |
US-ASCII |
Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set. |
ISO-8859-1 |
ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1. |
UTF-8 |
Eight-bit UCS Transformation Format. |
UTF-16BE |
Sixteen-bit UCS Transformation Format, big-endian byte order. |
UTF-16LE |
Sixteen-bit UCS Transformation Format, little-endian byte order. |
UTF-16 |
Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark. |
windows-1250 |
Windows Eastern European. |
windows-1251 |
Windows Cyrillic. |
Windows-936 |
Windows Latin-1. |
windows-1253 |
Windows Greek. |
windows-1254 |
Windows Turkish. |
windows-1257 |
Windows Baltic. |
KOI8-R |
KOI-8, Russian. |
|
10.客户不太满意上传的界面,有办法进行调整吗?
界面的背景颜色可以改,按钮可以换成html的。也可以隐藏组件中上传的按钮。
11.点击上传后出现"非法的URL地址(uploaddeald.asp)
这是因为试用版只能用80端口进行测试,不能用其他的端口。正式版没有端口的限制
12.要是购买正式版,能去掉"纵横文件上传"几个字吗?
正式版的页面上没有这个显示
13.文件提示上传成功,但在程序默认的文件夹中找不到上传的文件
单独运行uploaddeal.asp可以查看相关语法错误。如果是2003 Server需要做相关设置。
一、权限。二、去掉上传最大允许200K限制设置。(参考解答4)
14.与服务器的连接以外终止??为什么?
出现这种情况的原因有以下可能原因:
1. 服务端处理页面UploadDealD.asp存在语法方面的问题。可以偿试在IE地址栏单独运行这个asp页面。看报什么错误。来分析错误。
2. 如果是报CreateObject失败。原因:a. 服务器没有安装我们的组件。b. COM+应用程序里标识页, 验证方式改一下试试, COM+ 应用程序命:UFileUploadD。c. 权限问题。安装目录下的UFileUploadSvr.dll设成Everyone都可以访问。
3. 如果你是2003 Server, 你必须将默认允许最大上传为200K改掉。具体方法参见本论坛相关帖子
这个是Com+ 在2003 server下的截图:http://versalsoft.com/UploaderDemo/modifycom+.jpg
15.在图片上传之前有没有调整图片大小的方法?
有2种方法去实现这个功能
1.可以通过AutoAdjustImageRatio, MaxImageHeight MaxImageWidth来设置图片的宽和高。
例如:
imageuploadid.AutoAdjustImageRatio = 1
imageuploadid.MaxImageHeight = 1024
imageuploadid.MaxImageWidth = 768
2可以通过AutoCompressImage属性
如果把AutoCompressImage设为1,图片在上传之前会自动压缩成小于100k的图片。
例如:imageuploadid.AutoCompressImage = 1
16.给大家一个方便调试的打日志函数方便调试
sub trace(strFileName, strContent)
Set fs = Server.CreateObject("Scripting.FileSystemObject")
file = Server.MapPath(strFileName)
Set txt = fs.OpenTextFile( file, 8, True )
txt.WriteLine strContent
txt.Close
end sub
将以上代码拷贝到asp文件的顶端。 并用<%%>把以上代码括起来
调用方法:
trace "UploaderLog.log", "Log content"
"UploaderLog.log" =======日志文件名称
"Log content" ========要记录的日志内容
调用后会在改页面同级目录下生成UploaderLog.log文件。里面就是你想要的日志了:)
17.各种授权的区别和选择?(域名绑定&服务器绑定)
域名绑定:就是授权绑定你要使用相关组件所对应的域名。如
你想在www.versalsoft.com使用相关组件,就需要绑定相关的域名www.versalsoft.com。如果你还想在*.versalsoft.com下使都能使用该组件,就要绑定顶级域名的授权。
服务器绑定:就是绑定服务器的硬件ID。这样只要这台服务器上的所有的域名都可以使用该组件。
|