服务器上传程序文件失败,asp程序:本地测试正常,服务器上传文件失败

这几天在运用一个asp程序,它引用了xheditor编辑器,引用了无惧上传类 V2.2 xheditor特别修改版的上传程序upload.asp,在本地测试上传图片和文件都能成功,问题出在上传到服务器后图片上传不成功。

这里的不成功有几种,我是第2种,我分别说明一下:

第1种:出现文件根本无法上传的情况,这是由于无惧上传类v2.2的一个BUG

使用了“无惧上传类 v2.2”,在运行中出现这样一个问题,上传文件时提示上传成功,但文件实际上并没有传上去。然而,如果使用“无惧上传类 v1.2”的话就没有这个问题。经过对比代码,找到了问题的所在,我认为这应该是“无惧上传类 v2.2”的一个BUG。

在UpFile_Class类的SaveToFileEx成员函数中有这样两行:

tmpPath=Split(Path,".")(0)

FileExt=GetFileExt(Path)

后面判断若没有问题可以上传,则执行这样一行将文件写到本机中:

oFileStream.SaveToFile tmpPath & "." & FileExt,2

Path是上传的文件在本机的全路径。可以看出,作者的本意是tmpPath的值为文件本机全路径去掉扩展名和连接扩展名的“.”,这样做主要是基于安全上的考虑。然而,实际使用时路径中有一个“.”,如“D:/web/aaa.com/bbb/”,这样,tmpPath的值就是“D:/web/aaa”,这明显是错误的。出现了这样的问题依然提示上传成功的原因是SaveToFileEx函数的开头有一个“On Error Resume Next”。

这样,我们对SaveToFileEx函数进行一些修改,让其先截取路径和文件名,存放于onlyPath和onlyFileName中,再对onlyFileName进行扩展名截取。将tmpPath=Split(Path,".")(0)修改为以下代码:

for i=len(Path) to 1 step -1

if mid(Path, i, 1) = "/" or mid(Path, i, 1) = "/" then exit for

next

onlyPath = left(Path, i)

onlyFileName = right(Path, len(Path) - i)

tmpFileName = Split(onlyFileName,".")(0)

然后将写文件的代码改成这样:

oFileStream.SaveToFile OnlyPath & tmpFileName & "." & FileExt,2

进行了这样的修改,再运行就没有问题了。这个是文件保存路径不对造成的。

第2种:文件上传成功到指定的目录,但无法加载到ubb编辑框里,或者加载到ubb编辑里是个不一样的文件名。

若把upload.asp文件开头的on error resume next去掉,上传文件的过程会出如下错误:

/upload.asp,行300说是无权限 但是明明文件可以上传啊?300行代码是:

Function moveFile(oldfile,newfile)

dim fs

Set fs=Server.CreateObject("Scri"&"pting.File"&"Sys"&"temObject")

fs.movefile Server.MapPath(oldfile),Server.MapPath(newfile) (第300行)

Set fs=Nothing

End Function

本地测试文件上传成功,服务器也上传到了指定目录,就是无法这个moveFile函数,这是为什么呢?

有个原因:会不会是服务器上目录结构存在差异,如果跟踪一下Server.MapPath(newfile) ,看这个是否正确?

我测试过,找不出问题,只好不要这个函数,而是直接把上传后的文件名oldfile直接赋给newfile

把原来的代码:

'生成随机文件名并改名

Randomize timer

filename=DateFormat(now,"yyyymmddhhnnss")+cstr(cint(9999*Rnd))+"."+extension

target=attach_dir+filename

moveFile attach_dir+tmpfile,target

if immediate="1" then target="!"+target

target=jsonString(target)

改为:

'生成随机文件名并改名/左岸注:本地测试很成功,上传到服务器地无法执行moveFile,只好把这两个值对等了/

tmpfile=attach_dir+tmpfile

target=tmpfile

if immediate="1" then target="!"+target

target=jsonString(target)

这当然是坏办法,却也只能这么办了暂时,因为结果这样图片就上传成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP是一种服务器端脚本语言,用于开发动态的Web应用程序。它具有强大的文件上传功能,可以实现将文件上传服务器的功能。 要实现文件上传功能,首先需要在ASP页面中添加一个文件上传表单。表单中需要包含一个<input type="file">类型的input标签,用于选择要上传文件。在表单的action属性中指定服务器端处理文件上传ASP页面。当用户点击提交按钮时,选择的文件会被自动上传服务器。 在接收文件ASP页面中,需要使用ASP内置的对象和方法来处理文件上传。可以使用Request对象的Files集合来获取上传文件。例如,可以使用Request.Files("file")来获取名为file的文件。 接下来,可以使用FileSystemObject对象来处理上传文件。通过创建一个FileSystemObject对象,可以使用其方法和属性来管理文件系统。可以使用FileSystemObject对象的MoveFile方法将上传文件移动到指定的服务器文件夹中,也可以使用CopyFile方法将文件复制到指定的目录。 需要注意的是,服务器端必须对上传文件进行安全检查。可以通过检查文件的类型、文件大小等属性来确保上传文件是合法和安全的。可以使用ASP的内置对象来获取文件的类型和大小等信息。 总结起来,ASP上传文件服务器的过程包括创建文件上传表单、获取上传文件、使用FileSystemObject对象处理文件,并对上传文件进行安全检查。通过这些步骤,就可以实现在ASP中将文件上传服务器的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值