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

上传图片编辑器在IE、搜狗浏览器中好用,为什么在火狐中图片无法上传,且网页中有乱码现象? [问题已解决,多谢您,我尊敬的cnfarer老师!]

tepnidh 发布于 2010-07-30 15:32, 3214 次点击

在火狐中:
此图片上传编辑器是嵌入在网页中的,如下图:
只有本站会员才能查看附件,请 登录

选择本地图片文件,如下图:
只有本站会员才能查看附件,请 登录

点击“上传”后,如下图:
只有本站会员才能查看附件,请 登录

之后,再浏览网页,此时网页中出现乱码,尤以“?”号居多。如下图:
只有本站会员才能查看附件,请 登录


当关闭火狐后,再重新启动该浏览器,浏览网页,网页显示正常,但仍不能上传图片!

在IE中,上传图片正常,成功后,如下图所示:
只有本站会员才能查看附件,请 登录


我所使用的上传图片编辑器是bjq.asp,
只有本站会员才能查看附件,请 登录


请各位老师给予支持和帮助,我代表我们全家感谢您!呵~~~~~~~~~


[ 本帖最后由 tepnidh 于 2010-8-9 19:38 编辑 ]
33 回复
#2
gupiao1752010-07-30 16:17
只有本站会员才能查看附件,请 登录

把这个拿去试试,别用错了。编码被我换成了UTF-8!
#3
tepnidh2010-07-30 19:54
回复 2楼 gupiao175
谢谢您!我试了一下,问题依旧,请您再帮我想想办法吧!!
#4
tepnidh2010-07-30 22:13
回复 2楼 gupiao175
175版主,您好,我找到了“错误类型”,但不知道如何解决?请您辛苦一下,该如何解决?谢谢!


错误类型:
Microsoft VBScript 运行时错误 (0x800A0005)
无效的过程调用或参数: 'Instr'
/tep/tj-sc/HDPC/banner/bjq.asp, 第 224 行

bjq.asp..........第224行代码
......................
 if Instr(intTemp,strTemp,".")<>0 then.........................224行
......................
#5
gupiao1752010-07-30 22:43
不好意思,你的这个我真的看不懂,你的全部代码不该只有这些吧,你发的只是封装好的一个上传类。
#6
gupiao1752010-07-30 22:49
你网上重新找过一个吧,找简单些的上传类,你发的这个我真的看不懂那个代码,看了我头晕!
#7
tepnidh2010-07-30 23:12
回复 6楼 gupiao175
呵~~~~,真的不好意,打扰您啦!!谢啦!这个编辑器的代码就这些,是全部代码。

[ 本帖最后由 tepnidh 于 2010-7-30 23:13 编辑 ]
#8
cnfarer2010-07-31 05:47
回复 4楼 tepnidh
instr的调用方法有问题:http://baike.baidu.com/view/1320607.htm?fr=ala0_1_1
#9
tepnidh2010-07-31 07:45
回复 8楼 cnfarer
谢谢您的关注!您真是一个勤奋的人,这么早就来到论坛帮人排忧解难,实在令学生钦佩不已!
说实在的,我对编程可谓一窍不通,您能否在您最宝贵的时间里腾出一点儿来帮学生改一改好吗?我代表我们全家感谢您!呵~~~~~~,帮帮我吧,老师!

图片上传编辑器原代码:
只有本站会员才能查看附件,请 登录


[ 本帖最后由 tepnidh 于 2010-7-31 07:47 编辑 ]
#10
gupiao1752010-07-31 12:51
看你这么有心,发个我曾经用过的比较简单的上传代码给你分析下,可以在此基础上进行修改,看看能否对你有帮助!
程序代码:

<%response.codepage=65001%>
<%response.charset="UTF-8"%>
<%
'cc="wo我.,;32"
'
response.write chrB(10)
Function BIN2STR(xBinary,Charset)
Dim RS, LBinary,Binary
Binary
= xBinary
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Stream")
RS.Type
= 1
RS.Mode
=3
LBinary
= LenB(Binary)

if LBinary>0 then
RS.Open
RS.Write Binary
RS.Position
= 0
RS.Type
= 2
RS.Charset
= Charset
BIN2STR
= RS.Readtext
Else
BIN2STR
= ""
End If
End Function
   
Function bytes2BSTR(vIn)
        
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
        strReturn
= ""
        
For i = 1 to LenB(vIn)
            ThisCharCode
= AscB(MidB(vIn,i,1))
            
If ThisCharCode < &H80 Then
                strReturn
= strReturn & Chr(ThisCharCode)
            
Else
                NextCharCode
= AscB(MidB(vIn,i + 1,1))
                strReturn
= strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
                i
= i + 1
            
End If
        
Next
        bytes2BSTR
= strReturn
   
End Function
if request.querystring("act")="act1" then
a
=Request.TotalBytes
dd
=request.binaryread(a)
e
=chrB(13)&chrB(10)
'response.write bytes2BSTR(dd)
set h=server.createobject("adodb.stream")
h.type
=1
h.open
h.write dd
h.Position
=0
d
=h.read
f
=instrb(d,e)
g
=instrb(f+1,d,e)
response.write f
&"<br/>"&g
set c=server.createobject("adodb.stream")
c.type
=1
c.open
h.position
=f+1
h.copyto c,g
-f-3
c.position
=0
c.type
=2
c.charset
="utf-8"
i
=c.readtext
response.write
"<br/>"&i&"<br/>"
response.write BIN2STR(dd,
"utf-8")
c.close
j
=mid(i,instrrev(i,"\")+1,g)
response.write
"<br/>"&j&"<br/>"
k
=right(j,len(j)-instr(j,"."))
response.write k
end if
%>
<form enctype="multipart/form-data" action="?act=act1" method="post">
  <input type="file" name="n" />
  <input name="submit" type="submit" value="提交" />
</form>


这个代码是一个完整体,可以用这些代码直接上传任何文件,并无限制,你如果要敢时间就直接拿去用,不懂的,有问题就继续问!


#11
gupiao1752010-07-31 12:54
不好意思,好象发错了。
程序代码:

<%

a
=Request.TotalBytes
if a>0 Then
Set c=Createobject("adodb.stream")
c.Type
=1
c.Open
c.Write Request.BinaryRead(a)
c.Position
=0

d
=c.Read
e
=chrB(13)&chrB(10)
f
=Instrb(d,e)
g
=Instrb(f+1,d,e)

set h=Createobject("adodb.stream")
h.Type
=1
h.Open
c.Position
=f+1
c.Copyto h,g
-f-3
h.Position
=0
h.type
=2
h.CharSet
="BIG5"
i
=h.Readtext
h.close

j
=mid(i,InstrRev(i,"\")+1,g)

if instr("jsp/asp/aspx/exe/php/html/htm/...",right(j,len(j)-instr(j,".")))>0 then
session(
"error")="您要上传不允许的文件"
response.redirect(
"error.asp")
end if

j
=replace(date,"-","")&right(j,len(j)-instr(j,".")+1)

set fso=server.createobject("scripting.filesystemobject")
if fso.FileExists(server.mappath(j)) then
i
=1
msg
=true
do while msg
m
=left(j,instr(j,".")-1)&"("&i&")"&right(j,len(j)-instr(j,".")+1)
if not fso.FileExists(server.mappath(m)) then
j
=m
msg
=false
end if
i
=i+1
loop
end if
set fso=nothing


k
=Instrb(d,e&e)+3
l
=Instrb(k+1,d,leftB(d,f-1))-k-2
h.Type
=1
h.Open
c.Position
=k
c.CopyTo h,l
h.SaveToFile server.mappath(j),
2
end if
%>
<form enctype="multipart/form-data" method="post">
  <input type="file" name="n" />
  <input name="submit" type="submit" value="提交" />
</form>


#12
tepnidh2010-07-31 16:08
回复 10楼 gupiao175
非常感谢您!
#13
gupiao1752010-07-31 17:46
<%response.codepage=65001%>
<%response.charset="UTF-8"%>
忘记说了。为了防止编码混乱,都用utf-8吧,甚至ASP文件本身也改成UTF-8编码的!
h.CharSet="BIG5"改为:h.CharSet="UTF-8"
#14
tepnidh2010-07-31 18:41
回复 13楼 gupiao175
太感谢您啦!!!!!!!!!!!!!
#15
cnfarer2010-08-01 07:12
回复 9楼 tepnidh
只需要把instr中第三个参数删除即可
#16
tepnidh2010-08-01 08:08
回复 15楼 cnfarer
cnfarer老师:
早上好!学生按照您的指点,我把instr中第三个参数 "."删除之后,在火狐中,图片能正常上传了,图片也确实传到了up文件夹内,浏览网页时没有出现乱码,但,图片的路径没能写入数据库,因此在网页中看不到图片。随后,我在IE7中,也同样试了一下,很成功!

请问您:在火狐中,图片的路径为什么没能写入数据库啊?
就差这一点了,再帮帮我吧!!叩谢!


bjq.asp.......第76,77行代码,是不是这里存在问题呀?

76行:
response.write "<script language=""javascript"">parent.form1.pic.value='"&Uprequest.SavePath&Uprequest.Form("file")&"';" '上传完成后,得到上传路径文件名到表单
77行:
response.write "</script>"

bjq.asp原代码:

只有本站会员才能查看附件,请 登录


[ 本帖最后由 tepnidh 于 2010-8-1 19:48 编辑 ]
#17
tepnidh2010-08-02 12:56
回复 15楼 cnfarer
恳请您再帮我一次吧!叩谢!!
#18
tepnidh2010-08-02 16:18
火狐做不到的,谷歌,腾讯TT,傲游,世界之窗,彩虹,搜狗,IE7。。。都能做得到!


一个小小的上传图片程序,在谷歌,腾讯TT,傲游,世界之窗,彩虹,搜狗,IE7。。。中都好用,唯独TMD的火狐就是不好用!我决定枪毙它!判处它死刑,立即执行!!
#19
xq宁静致远2010-08-02 16:31
加这个试一下
<%response.charset ="GBK"%>
火狐的编码问题吧
#20
tepnidh2010-08-02 16:53
回复 19楼 xq宁静致远
谢谢您的支持!加了之后,问题依旧。再次表示感谢!
#21
冰镇柠檬汁儿2010-08-02 17:05
<%response.charset ="GB2312"%>
#22
tepnidh2010-08-02 18:20
回复 21楼 冰镇柠檬汁儿
呵~~,多谢,问题依旧!
我现在的问题是:上传图片正常,也不乱码,但图片路径不能写入数据库。
而在谷歌,搜狗,IE7,傲游,彩虹,TT等浏览器中都正常,就是在火狐中不行!问题很可能是在上传图片编辑器中,如果您有时间有话,就帮我看看这个编辑器吧!再次表示感谢!

只有本站会员才能查看附件,请 登录
#23
tepnidh2010-08-04 06:03
问题尚未完全解决,请诸君不吝赐教!多谢!
问题尚未完全解决,请诸君不吝赐教!多谢!
#24
cnfarer2010-08-04 08:15
不要使用图片的value而使用src属性
#25
tepnidh2010-08-05 19:28
回复 24楼 cnfarer
多谢您的指点,不过我真的是一个菜菜鸟,能否详细地说说,不胜感激!

[ 本帖最后由 tepnidh 于 2010-8-5 19:47 编辑 ]
#26
cnfarer2010-08-06 06:30
回复 25楼 tepnidh
response.write "<script language=""javascript"">parent.form1.pic.value='"&Uprequest.SavePath&Uprequest.Form("file")&"';" '上传完成后,得到上传路径文件名到表单
#27
tepnidh2010-08-06 19:51
回复 26楼 cnfarer

您好!感谢您对我这样的笨笨的耐心指点,您的意思是不是把value改成src呀?如果是这样的话,问题还是没有解决。
response.write "<script language=""javascript"">parent.form1.pic.src='"&Uprequest.SavePath&Uprequest.Form("file")&"';" '上传完成后,得到上传路径文件名到表单
#28
tepnidh2010-08-08 09:58
帮我解决此问题,送您100分!
帮我解决此问题,送您100分!
#29
cnfarer2010-08-09 06:22
回复 27楼 tepnidh
不知道你是怎么测试的,也不知道是不是你自己写的代码,从你的代码可以看出,这是不完整的!(parent.form1.pic对象是找不到的!)
我在你原码的基础上,进行了适当的处理,添加了一个PIC对象用来显示上传的图片,一切正常.
只有本站会员才能查看附件,请 登录

另外注意一下上传路径:我已改为当前目录下的UP文件夹(uploadpath="./up/"'上传保存路径)

[ 本帖最后由 cnfarer 于 2010-8-9 06:28 编辑 ]
#30
tepnidh2010-08-09 11:36
回复 29楼 cnfarer
cnfarer老师,您好!大恩不言谢!

我测试了一下,在火狐中,图片能够成功上传,但图片路径没能写入到数据库。就要成功了!学生很高兴!

老师,您看这样行吗?我把完整的原程序一并打包传上来,呵呵,不大,就一小包啊,然后,请您测试一下,好吗?!

只有本站会员才能查看附件,请 登录


[ 本帖最后由 tepnidh 于 2010-8-9 14:10 编辑 ]
#31
cnfarer2010-08-09 17:20
试试吧
只有本站会员才能查看附件,请 登录
#32
tepnidh2010-08-09 19:36
回复 31楼 cnfarer
终于成功了!!。。。。。。狂喜!!

多谢您,我尊敬的cnfarer老师!我就感觉到了您是一位高手,而且是一位乐于助人的高手!

我只想说:

好人一生平安,祝您及您的全家健康快乐!

为了表达学生的一点心意,学生送您100分。

大恩不言谢!

对啦,老师,我怎样把100分送给您呀?呵~~~~~~~~~~~~我真笨呀!




[ 本帖最后由 tepnidh 于 2010-8-9 19:45 编辑 ]
#33
cnfarer2010-08-10 06:10
回复 32楼 tepnidh
不客气,我不差分!
#34
tepnidh2010-08-10 07:00
回复 33楼 cnfarer
钦佩之极!学生知道您不差分,可学生有言在先啊,谁能帮我解决问题,我就送谁100分。我得话符前言,不能食言啊!这样吧,我另发表一个贴子,请您无论如何也要进去坐一坐,喝杯茶呀。。。。。。学生在那里恭候啦。
1