在线用户    站点地图 技术论坛 文档中心 站点导航 资源下载 语言参考 教程专题 站点统计 业务项目 使用帮助
您的位置
MSDN参考新加了CSS2参考,全中文,制作精良。245k下载。           新加了sxf_sxf推荐的"动态网页专家指导" 下载!          新加了lsg2002lsg推荐的"ASP.NET高级编程(PDF)" 下载!          新加了DHTML代码预览!!,功能强大哦!欢迎试用          新加了网友lincong为大家提供的SQL Server 2000 程序员指南,有点大,但同时也就说明内容全咯!           新加了网友ibra为大家提供的北大的JAVA课件,很适合初学者入门           新加了一个java的连接缓冲池代码示例           新加了人月神话电子版下载!软件工程巨著哦~~           更新了评分标准,引入了“专家分”概念,相信可以更好的激励大家的学习!详情请看“使用帮助”           新加了由网友GGG提供的“IIS超级管理手册”,值得一看哦!(虽然我没看过 :P )           新加了“英雄榜”,欢迎测试!           “无组件上传·从原理剖析到实践”已经全部完成,源码全部开放,有兴趣的朋友请到文档中心一探究竟。  您的位置  首页>技术论坛>ASP>F0008101 在同一窗口中打开页面中的链接 在新窗口中打开页面中的链接 将ASPCHINA设为首页 将ASPCHINA加入书签    
 LOGIN HERE
用户:
密码: 忘记密码
记住密码 用户注册 游客进入

论坛首页
|--web开发
   |--ASP
   |--JSP
   |--ASP.net
   |--DHTML
   |--RUBY
|--软件开发
   |--C++
      |--Code here
   |--JAVA
   |--VB
   |--Delphi
   |--XML
|--.net技术
   |--C#
   |--VB.net
|--Yup开发组
|--站务&投诉
   |--站长专区
|--硬件&网络
|--休息室
|--数据库技术
 进入精华区 我要发言



 如何正确的将上传上来的图片数据保存成一个文件。back to ASP forum  
作者:梦猫猫,5级分数:0
日期:2002/7/13 0:48:00类别:ASP, 技术问题
回复:28次浏览:2898次
状态:无分贴

内容同上!!!!
我利用原来上传到数据库中的一段代码。也就是提取图象数据那段
然后利用FSO.createtextfile("d:/uploadimg/text.jpg",true,true)
将数据存储为一个图象文件,但无法正常显示。通过ULTREDIT观察,发现在文件头,以及文件尾都有多余的字符。
文件头多余字符为FF FE
文件尾多符字符为0D 0A或0D
请问如何解决这个问题。
好象在保存时自动加上的。
因为我将上传数据的分隔符,如----------8da83dafc
保存下来,也有多余的字符!

reply[F0008101]
 



 
 re [1] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-13 14:55  

的确如此。MSDN里说:
The FSO object model, which is contained in the Scripting type library (Scrrun.dll), supports text file creation and manipulation through the TextStream object. Although it does not yet support the creation or manipulation of binary files, future support of binary files is planned.

所以,只能观察一下规律,看看能不能自己处理了。

reply[F0008128]
 



 
 re [2] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 01:18  

那告诉我应该怎么做好吗?
我看到有一个新东东:adodb.stream。有它的资料吗?

reply[F0008170]
 



 
 re [3] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 11:22  

哦?有啊。就在上面的“参考资料|MSDN”。

他有一个savetofile方法:
Stream.SaveToFile FileName, SaveOptions
先放倒库里,再用stream读出存盘是个办法,你可以研究一下怎么把从form来的data直接传给stream。

有成果了告诉我一声哦。

reply[F0008183]
 



 
 re [4] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 12:40  

到 参考资料|MSDN里 去看了看,导航栏看到一遍乱码:(
没找到adodb.stream的资料。
给我一个地址好吗?

reply[F0008210]
 



 
 re [5] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 14:18  

那个叶面有乱码?我去改。

下这个:http://www.2yup.com/asp/zip/ado.zip

reply[F0008213]
 



 
 re [6] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 20:22  

我在网吧上的。
可能是网吧的问题吧。
这个资料是E文的:(
真后悔原来没好好学。

reply[F0008232]
 



 
 re [7] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 22:22  

哦。这样。

现在学也不迟啊。E文对于学编程是很重要的。大多数值得一看的资料都是E文的。一定要学好哦!

reply[F0008239]
 



 
 re [2] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 01:23  

开头好象是固定的FF FE
可结尾部分是变化的。
所以不好处理了。
但有看了一个上传的例子,好象通过一个chr(ascb(midb(binarystr,I,1))))
i是递增变量,是使用循环语句。但二进制的长度用LENB来得出吗?但好象传递给LENB的参数如果是一个变量,而不是一个原始的数据,这个时候会出错。我也不知道是什么原因;它测出来的长度就是变量名的长度,而不是变量所代表数据的长度。我被搞糊涂了。

reply[F0008171]
 



 
 re [3] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 11:15  

哦?这样。昨天我用midb(binarystr,I,1)试了一下没成功。不是啊,就是数据的长度没问题。

reply[F0008181]
 



 
 re [3] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 11:16  

试了一下,还是不行。结果一样。用这种方法时,要用二进制打开:
myFileObject.CreateTextFile("D:\Inetpub\wwwroot\test.gif",True,False)
注意第二个false。

reply[F0008182]
 



 
 re [4] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 12:27  

第二个FALSE应该是ASCII的?
我的E文不是太好。

reply[F0008209]
 



 
 re [5] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 14:16  

对。true是unicode,会使文件大小翻一番。

reply[F0008212]
 



 
 re [6] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 20:45  

对了,我还不太明白UNICODE,有资料吗?
又要麻烦你了:)
可以给我有关adodb.stream,以及unicode的中文资料吗?

reply[F0008234]
 



 
 re [7] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 22:09  

unicode是用双字节表示所有的字符,不会出现目前的gb2312双字节,而英文单字节的情况。所以叫"uni"。而二进制是按字节的,所以就出现了文件大小翻番的问题。不用理会他。

久安我给你的连接下载资料啊。里面有详细的API参考。

reply[F0008235]
 



 
 re [8] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-14 22:42  

全是E文的:(

reply[F0008246]
 



 
 re [9] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-14 23:32  

*_*

就是这个样子。人生不如意十有八九。。。

reply[F0008250]
 



 
 re [7] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-15 12:37  

看到了这一片,就是用stream:

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>

'''''''''''''''''''''''''''''''''''''''''''''''''
'
'请保留此信息: 稻香老农制作 http://www.5xSoft.com/
'
'''''''''''''''''''''''''''''''''''''''''''''''''

dim upfile_5xSoft_Stream

Class upload_5xSoft

dim Form,File,Version

Private Sub Class_Initialize
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version="上传"
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")
upfile_5xSoft_Stream.mode=3
upfile_5xSoft_Stream.type=1
upfile_5xSoft_Stream.open
upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)

vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
if iFileNameStart>0 and iFileNameStart<iFormEnd then
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFileSize=iEnd-iStart-4
else
mFileSize=0
end if
set theFile=new FileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.add mFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)

if iEnd>iStart then
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
end if
form.Add mFormName,mFormValue
end if

iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub

Private Function subString(theStart,theLen)
dim i,c,stemp
upfile_5xSoft_Stream.Position=theStart-1
stemp=""
for i=1 to theLen
if upfile_5xSoft_Stream.EOS then Exit for
c=ascB(upfile_5xSoft_Stream.Read(1))
If c > 127 Then
if upfile_5xSoft_Stream.EOS then Exit for
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
End If
Next
subString=stemp
End function

Private Function inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
for i=theStart to upfile_5xSoft_Stream.Size-theLen
if i>upfile_5xSoft_Stream.size then exit Function
upfile_5xSoft_Stream.Position=i-1
if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then
InString=i
for j=2 to theLen
if upfile_5xSoft_Stream.EOS then
inString=0
Exit for
end if
if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
InString=0
Exit For
end if
next
if InString<>0 then Exit Function
end if
next
End Function

Private Sub Class_Terminate
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
upfile_5xSoft_Stream.close
set upfile_5xSoft_Stream=nothing
End Sub


Private function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End  function

Private function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End  function

Private function toByte(Str)
dim i,iCode,c,iLow,iHigh
toByte=""
For i=1 To Len(Str)
c=mid(Str,i,1)
iCode =Asc(c)
If iCode<0 Then iCode = iCode + 65535
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
End Class


Class FileInfo
dim FormName,FileName,FilePath,FileSize,FileStart
Private Sub Class_Initialize
FileName = ""
FilePath = ""
FileSize = 0
FileStart= 0
FormName = ""
End Sub

Public function SaveAs(FullPath)
dim dr,ErrorChar,i
SaveAs=1
if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
if FileStart=0 or right(fullpath,1)="/" then exit function
set dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_5xSoft_Stream.position=FileStart-1
upfile_5xSoft_Stream.copyto dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
set dr=nothing
SaveAs=0
end function
End Class
</SCRIPT>

文件---upload.asp————
<%OPTION EXPLICIT%>
<!--#include FILE="upload_5xsoft.inc"-->
<html>
<head>
<title>无组件文件上传</title>
<meta http-equiv="refresh" content="3;url=addnews1.asp">
</head>
<body>
<br>文件上传!<hr size=1 noshadow width=300 align=left><br><br>
<%
dim upload,file,formName,formPath,iCount,newsid
set upload=new upload_5xSoft ''建立上传对象

if upload.form("filepath")="" then  ''得到上传目录
HtmEnd "请确认上传目录存在!"
set upload=nothing
response.end
else
formPath=upload.form("filepath")
''在目录后加(/)
if right(formPath,1)<>"/" then formPath=formPath&"/"
end if
newsid=upload.form("newsid")
iCount=1
for each formName in upload.file ''列出所有上传了的文件
set file=upload.file(formName)  ''生成一个文件对象
if file.FileSize>0 then        ''如果 FileSize > 0 说明有文件数据
file.SaveAs Server.mappath(formPath& NewsID & "-" & cstr(iCount)&"."& getFileExtName(file.fileName))  ''保存文件
response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&Server.mappath(formPath)& NewsID & "-" & cstr(iCount)&"."& getFileExtName(file.fileName)&" 成功!<br>"
iCount=iCount+1
end if
set file=nothing
next
set upload=nothing  ''删除此对象
response.write iCount-1&" 个文件上传结束!"

sub HtmEnd(Msg)
set upload=nothing
response.write "<br>"&Msg&" [<a href=""javascript:history.back();"">返回</a>]</body></html>"
response.end
end sub
%>
</body>
</html>
<%
'获得文件的后缀名
function getFileExtName(fileName)
dim pos
pos=instrrev(filename,".")
if pos>0 then
getFileExtName=mid(fileName,pos+1)
else
getFileExtName=""
end if
end function
%>


代码有点messy,有心得了告诉我一声哦!

reply[F0008298]
 



 
 re [8] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-15 12:48  

没有adodb.stream的资料,不知道有些属性跟方法的用途啊!看起来头痛:(
5555~~~~~
          难过~~

reply[F0008299]
 



 
 re [9] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-15 17:53  

看了点,头痛!!!有些什么都不知道:(

reply[F0008344]
 



 
 re [9] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-15 23:33  

没办法。。。

人生不如意十有八九。。。

reply[F0008364]
 



 
 re [10] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- 梦猫猫02-07-16 20:04  

找到一个中文版的,正在学习了。

reply[F0008448]
 



 
 re [11] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-07-17 01:20  

哦。尽量简化他的代码,能实现写文件就行。有办法了贴上来,我把他加到精华区。

reply[F0008461]
 



 
 re [11] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- fox775502-11-28 14:46  

能贴上去吗?

reply[F0032713]
 



 
 re [1] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles02-08-01 23:29  

<%
response.buffer=true
formsize=request.totalbytes 
formdata=request.binaryread(formsize) 
bncrlf=chrB(13) & chrB(10) 
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart 
mydata=midb(formdata,datastart,dataend)

Dim  objStream
Set  objStream  =  Server.CreateObject("ADODB.Stream")
objStream.Type  =  1
objStream.Open
objStream.write formdata
objStream.SaveToFile "c:\2.jpg"
objStream.Close
Set objStream = Nothing
%>


这就是个最简的例子。

reply[F0009836]
 



 
 re [2] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- Mohammed03-06-20 12:05  

我觉得还是上传到目录好。。
如果上传入库。。则一来出入库较慢。。二来随着入库的文件不断增多。。数据库也会迅速变大。。最后上传的文件也不好管理。。
一点愚见。。你对这个问题的看法呢。。。

reply[F0075969]
 



 
 re [3] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles03-06-20 20:22  

没错!效率低的多。不过,有一个不可比拟的优点:数据完整性容易保证。不用到处找文件备份~~~

reply[F0076089]
 



 
 re [4] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- soimy200204-01-16 09:05  

我是先将上传的文件保存在一个固定的目录中,再将文件名保存在数据库中,然后显示的时候用<img src="">格式显示出来。

reply[F0102981]
 



 
 re [5] 如何正确的将上传上来的图片数据保存成一个文件。ASP forum  
- miles04-01-16 22:00  

呵呵。。比较主流的做法~~

reply[F0103118]
 



您的位置
  (c)2000-2019 Yup Studio, all rights reserved.  
438.4766