如果是已经存在数据库中的,那么就比较简单了
直接图区路径,之后再页面展示就行了
如果是读取目录中的就比较麻烦了,要先读该目录下的所有文件,
之后再在页面中循环读取展示就行了
不过,越大的页面加载越慢,所以如果特别的多,那么
建议你修改的质量,尽可能的小
这样页面加载会快一些
读取文件目录的代码,网上有不少的案例,你可以自己下载看看噢
以上就是我提供的思路,希望对 您有帮助
若帮助到您的话请及时采纳,就是不采纳我的,也可以点下赞同
鼓励下我哈<style>tablestyle{ background:url(/images/bgjpg);//背景,注意地址要跟你当前文件的地址做对应,如果是css文件,就要跟css文件对应起来。 background-repeat:norepeat;//背景是否重复
background-position:left top;//背景的位置}</style> <table><tr><td></td></tr></table>body{
background::#fff url(/images/xxxjpg) repeat; /#fff是颜色,后面url里面是背景地址/
}
合起来写用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服
务器恐怕是遇见最多的问题了,尤其是上传,比如你想要在自己的社区里面实现类似网易
虚拟社区 提供的“每日一星”的功能,就要提供给网友上传照片的功能。上传文件到服务
器可以使用各种免费的文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们
只能使用免费的支持ASP的空间或者租用别人的虚拟空间,对于第一种情况,我们根本就没
有可能来使用文件上传组件;至于第二种情况,我们也要付出不少的“银子”才可以。除非你
拥有自己的虚拟主机,你就可以随便的在服务器上面安装自己所需要的组件,这种情况对于大
多数人来说是可望而不可及的。那我们就没有办法了吗?呵呵,答案是肯定的(当然是肯定的
了,要不然我也没法写出这篇文章啊)。下面就让我们一起来使用纯ASP代码来实现的
上传以及保存到数据库的功能(顺便也实现显示数据库中的到网页上的功能)。
首先我们先来熟悉一下将要使用的对象方法。我们用来获取上一个页面传递过来的数据一
般是使用Request对象。同样的,我们也可以使用Request对象来获取上传上来的文件数据,使
用的方法是RequestBinaryRead()。而我们要从数据库中读出来的数据显示到网页上面要
用到的方法是:
RequestBinaryWrite()。在我们得到了的数据,要保存到数据库中的时候,不可以直接
使用Insert语句对数据库进行 *** 作,而是要使用ADO的AppendChunk方法,同样的,读出数据库
中的数据,要使用GetChunk方法。各个方法的具体语法如下:
RequestBinaryRead语法:
variant=RequestBinaryRead(count)
参数
variant
返回值保存着从客户端读取到数据。
count
指明要从客户端读取的数据量大小,这个值小于或者等于使用方法RequestTotalBytes得到的
数据量。
RequestBinaryWrite语法:
RequestBinaryWritedata
参数
data
要写入到客户端浏览器中的数据包。
RequestTotalBytes语法:
variant=RequestTotalBytes
参数
variant
返回从客户端读取到数据量的字节数。
AppendChunk语法
将数据追加到大型文本、二进制数据Field或Parameter对象。
objectAppendChunkData
参数
objectField或Parameter对象
Data变体型,包含追加到对象中的数据。
说明
使用Field或Parameter对象的AppendChunk方法可将长二进制或字符数
据填写到对象中。在系统内存有限的情况下,可以使用AppendChunk方法对长整型值进行
部分而非全部的 *** 作。
GetChunk语法
返回大型文本或二进制数据Field对象的全部或部分内容。
variable=fieldGetChunk(Size)
返回值
返回变体型。
参数
Size长整型表达式,等于所要检索的字节或字符数。
说明
使用Field对象的GetChunk方法检索其部分或全部长二进制或字符数据。在系统内存有限
的情况下,可使用GetChunk方法处理部分而非全部的长整型值。
GetChunk调用返回的数据将赋给“变量”。如果Size大于剩余的数据,则
GetChunk仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则
GetChunk方法返回Null。
每个后续的GetChunk调用将检索从前一次GetChunk调用停止处开始的数据。但是,如果从
一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ADO将认为已从第一个字段
中检索出数据。如果在第一个字段上再次调用GetChunk方法,ADO将把调用解释为新的GetChu
nk *** 作并从记录的起始处开始读取。如果其他Recordset对象不是首个Recordset对象的副本,
则访问其中的字段不会破坏GetChunk *** 作。
如果Field对象的Attributes属性中的adFldLong位设置为True,则可以对该字段使用GetChun
k方法。
如果在Field对象上使用Getchunk方法时没有当前记录,将产生错误3021(无当前记录)。
接下来,我们就要来设计我们的数据库了,作为测试我们的数据库结构如下(Access200
0):
字段名称 类型 描述
id 自动编号 主键值
img OLE对象 用来保存数据
对于在MSSQLServer7中,对应的结构如下:
字段名称 类型 描述
id int(Identity) 主键值
img image 用来保存数据
现在开始正式编写我们的纯ASP代码上传部分了,首先,我们有一个提供给用户的上传界面
,可以让用户选择要上传的。代码如下
(uploadhtm):
<html>
<body>
<center>
<form name="mainForm" enctype="multipart/form-data" action="processasp" method=p
ost>
<inputtype=filename=mefile><br>
<inputtype=submitname=okvalue="OK">
</form>
</center>
</body>
</html>
注意enctype="multipart/form-data",一定要在Form中有这个属性,否则,将无法得到上传
上来的数据。接下来,我们要在processasp中对从浏览器中获取的数据进行必要的处理,因
为我们在processasp中获取到的数据不仅仅包含了我们想要的上传上来的的数据,也包
含了其他的无用的信息,我们需要剔除冗余数据,并将处理过的数据保存到数据库中,这
里我们以access2000为例。具体代码如下(processasp):
<%
responsebuffer=true
formsize=requesttotalbytes
formdata=requestbinaryread(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)
setconnGraph=serverCreateObject("ADODBconnection")
connGraphConnectionString="driver={MicrosoftAccessDriver(mdb)};DBQ="&serverMa
pPath("imagesmdb")&";uid=;PWD=;"
connGraphOpen
setrec=servercreateobject("ADODBrecordset")
recOpen"SELECTFROM[images]whereidisnull",connGraph,1,3
recaddnew
rec("img")appendchunkmydata
recupdate
recclose
setrec=nothing
setconnGraph=nothing
%>
好了,这下我们就把上传来的保存到了名为imagesmdb的数据库中了,剩下的工作就是要
将数据库中的数据显示到网页上面了。一般在HTML中,显示都是使用<IMG>标签
,也就是<IMGSRC="路径">,但是我们的是保存到了数据库中,“路径”是什么
呢?呵呵,其实这个SRC属性除了指定路径外,也可以这样使用哦:
<IMGSRC="showimgaspid=xxx">
所以,我们所要做的就是在showimgasp中从数据库中读出来符合条件的
数据,并返回到SRC属性中就可以了,具体代码如下(showimgasp):
<%
setconnGraph=serverCreateObject("ADODBconnection")
connGraphConnectionString="driver={MicrosoftAccessDriver(mdb)};DBQ="&
serverMapPath("imagesmdb")&";uid=;PWD=;"
connGraphOpen
setrec=servercreateobject("ADODBrecordset")
strsql="selectimgfromimageswhereid="&trim(request("id"))
recopenstrsql,connGraph,1,1
ResponseContentType="image/"
ResponseBinaryWriterec("img")getChunk(7500000)
recclose
setrec=nothing
setconnGraph=nothing
%>
注意在输出到浏览器之前一定要指定ResponseContentType="image/",
以便正常显示。
最后要注意的地方是,我的processasp中作的处理没有考虑到第一页(uploadhtm)中还有其
他数据,比如<INPUT type=tesxt name=userid>等等,如果有这些项目,你的processasp就
要注意处理掉不必要的数据。你说的“框”和“下划线”是指什么呢?如果那个“框”是文本框的话,只能通过代码实现你要的功能了,可以的话你Q我帮你看看75215713。
你这样的表格,估计是用来打印在纸条上的。看这个表格的情况,如果要批量导入数据,非常困难,尤其是要将文字放在下划线上,即使能够自动放置,要刚好对准下划线也是非常困难的。我的建议就是修改你的表格,去掉那些框(应该就是文本框)和下划线,通过设置单元格的边框来实现你要的“框”和下划线的效果,你放心,只要设置得当,打印出来的效果是和你现在的效果一样的。
那么,怎样将原始数据自动导入修改过后的这个表格呢?现在我拿姓名项作为例子跟你说一下:合并A1,B1,C1三个单元格为一个单元格,输入“姓名”,选中姓名下方的三个单元格也就是A2,B2,C2,设置边框为实线。现在,该开始使用代码了,右键单击工具栏任一工具,选中“控件工具箱”,在d出的“控件工具箱”上按一下“命令按钮”,在空白处划出一个按钮,双击按钮,自动打开代码窗口,在光标闪烁处输入如下代码:
Sheet2Cells(2, 1)Value = Sheet1Cells(2, 1)Value
'这里假定你的sheet1存放原始数据,单元格A2(也就是Cells(2, 1))为姓名,sheet2为你要的最终表格。就是通过这样的方法导入。
此外,你必须将Cells(2, 1)里面的数字改为变量表示,这样才能达到“自动”导入的目的,只能说这么多了,希望能起到举一反三的作用,如果还不知道怎样弄,你可以自己查下代码控制单元格的知识,祝你一劳永逸。
protected string FileUpload() { //先生成上传的物理位置文件夹 例如 20090821 \\ string UploadPicSubPhypath = DateTimeNowYearToString() + DateTimeNowMonthToString() + DateTimeNowDayToString() + "\\"; string strPhyPath = ConfigurationManagerAppSettings["phccda_PhyPath"] + "UploadPic\\2009valuepizza\\" + UploadPicSubPhypath; try { //判断路径是否存在,不存在则创建 if (!SystemIODirectoryExists(strPhyPath)) { SystemIODirectoryCreateDirectory(strPhyPath); } //获取文件 >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)