注册 登录
编程论坛 ASP技术论坛

这种问题是和代码编写有关还是和操作系统或者IIS设置有关系,还是和文件夹权限有关系

sjzfls 发布于 2008-03-26 15:32, 1811 次点击
我自己的机器做服务器,操作系统是 XPsp2+IIS。

做了个小网站,新闻发布系统是图片上传到 UpImages 文件夹(并按时间从新命名),在access2003中保存图片路径,然后在首页显示新闻内容和图片。

在本机测试 上传图片和显示一切正常,可是用同事的机器(也是XP系统),在上传图片时出现错误(上传文字内容没问题),错误如下:

技术信息(用于支持人员)

错误类型:
ADODB.Stream (0x800A0BBA)
文件无法被打开。
/rocksjz/function.asp, 第 20 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

网页:
POST 199 ??? /rocksjz/admin_add.asp

POST Data:
title=%D4%DA%B1%F0%B4%A6%B2%E2%CA%D4%C9%CF%B4%AB%CD%BC&newsclass=15&imagespath=D%3A%5CMy+Documents%5CMy+Pictures%5C186.jpg&content=%D4%DA%B1%F0%B4%A6%B2%E2%CA%D4%C9%CF%B4%AB%CD%BC&Submit=%CC%E1%BD%BB

我自己的机器做服务器,操作系统是 XPsp2+IIS ,测试都没有问题,我和同事们是局域网。

看了文件function.asp第20行代码是: objStream.LoadFromFile imagespath

出现这种问题难道和操作系统或者IIS设置有关系,还是和文件夹权限有关系呢 ?
12 回复
#2
madpbpl2008-03-26 15:40
有可能是权限问题,楼主先设置一下权限试试
#3
sjzfls2008-03-26 17:21
iis中已经开启 父路径了,不知道文件夹权限 怎么设置啊?
我的硬盘是NTFS格式
(难道以后我上传到其他服务器上,还能改人家的文件夹权限吗?)

[[it] 本帖最后由 sjzfls 于 2008-3-26 17:24 编辑 [/it]]
#4
madpbpl2008-03-26 17:27
刚才去51js也看到楼主的问题了,你可以按照我那个朋友回答的去找一下原因,可能是路径的问题。
文件夹权限指的:(网站所属文件夹和windows\temp)--》属性--》安全--》users 添加完全控制权限
这里的前提假设楼主硬盘格式是ntfs
如果没有安全这个选项,请先工具--》文件夹选项--》简单共享(推荐) 前面的勾去掉
#5
sjzfls2008-03-26 17:38
文件夹权限指的:(网站所属文件夹和windows\temp)--》属性--》安全--》users 添加完全控制权限

属性里怎么没有啊?
#6
madpbpl2008-03-26 17:41
没有什么?
#7
sjzfls2008-03-26 18:11
找到权限安全设置了

不过郁闷的是.设置了权限怎么也不行啊~~~

我 在 安全里 把users 的权限设置成了  全部~~  可在别处上传图片还是不行~
#8
madpbpl2008-03-26 18:22
那很可能就是前面说的路径问题了。
#9
zhou2008-03-26 18:34
提示: 作者被禁止或删除 内容自动屏蔽,只有管理员可见
#10
sjzfls2008-03-27 08:45
路径问题~~~

那应该怎么修改呢?
#11
sjzfls2008-03-27 17:40
又发现,怎么有些图片能传,有些传不了啊~~~

彻底郁闷了饿~
#12
sjzfls2008-03-28 10:39
这是我的 function.asp 的代码

<!--#include file="adovbs.inc"-->
<%       '功能:取得服务端相对图片路径
       '参数:客户端图片路径
       '返回值:图片路径
       Function GetFileName(imagespath)
              If imagespath <> "" Then
                     GetFileName = "Upimages/" & year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&Right(imagespath,4)
              Else      
                     GetFileName =""
              End If
       End Function
      
       '功能:用stream组件上传图片
       '参数:客户端图片路径
       '返回值:成功返回1,失败返回0
       Function upImages(imagespath)
              Set objStream = Server.CreateObject("ADODB.Stream")
              objStream.Type = 1 ' adTypeBinary
              objStream.Open
              objStream.LoadFromFile imagespath
              objStream.SaveToFile Server.MapPath(GetFileName(imagespath)),adSaveCreateOverWrite
              objStream.Close
              If ERR.number<>0 Then
                     upImages = 0
              Else
                     upImages = 1
              End If
       End Function
      
       '功能:将空格与回车符等转换成html语法格式
       '参数:新闻信息内容
       '返回值:字符串中的空格与回车符被等转换成html语法格式
       Function unHtml(content)
              unHtml=content
              If content <> "" Then
                     unHtml=replace(unHtml,"&","&")
                     unHtml=replace(unHtml,"<","&lt;")
                     unHtml=replace(unHtml,">","&gt;")
                     unHtml=replace(unHtml,chr(34),""")
                     unHtml=replace(unHtml,chr(13),"<br>")
                     unHtml=replace(unHtml,chr(32),"&nbsp;")
              End If
       End Function
%>


图片目录在 根目录的  Upimages 文件夹下~~  请求大家的帮助啊~~~
#13
sjzfls2008-03-28 14:44
经过很多的请教和查找 我发现 最根本的错误是在于 ADODB.stream做上传的问题.

ADODB.Stream对象的LoadFromFile方法读取的是本机的绝对路径,如果写在ASP代码中,那么所谓的本机是指服务器,而不是通过浏览器上网的客户机。调试时如果在本机用IIS发布的话,当然能工作,因为存在相同的路径和文件。实际使用时,这个程序是十分失败的,代码犯了概念性错误。不可以用stream读客户端数据。

我想请教大家,就我的那个 funtion.asp 要怎么修改 才能解决问题呢??
1