导航:首页 > 编程知识 > 编程系统如何上传图片

编程系统如何上传图片

发布时间:2024-11-15 05:08:47

① 关于ASP照片的上传

实例分析

但是,利用ASP技术直接实现文件上传功能则只需编程者掌握单一的ASP技术即可,

大大降低了编程难度。下面我们将通过一个实例来介绍如何使用该方法。

1、文件上传表单

首先需要编写一个能提供文件上传功能的表单,程序如下所示:

<Form action="upload.asp" method=post enctype="multipart/form-data">
上传文件:<Input type=file name=file1><br>
<input type=submit name=upload value="上传">
</form>

其中,enctype参数用来设置表单的MIME编码方式,在进行文件(或同时包含文本框)上传时,必须将其属性设置为"multipart/form-data";upload.asp是服务器端对接收到的二进制文件流进行处理的ASP程序,在本文的后面将陆续介绍其内容。

2、上传文件格式分析

在处理文件之前,我们要先了解上传的文件的具体格式,通过编写下面一段简单的ASP程序就可以查看其二进制代码

<%
filesize=Request.TotalBytes '获得上传文件的大小
filedata=Request.BinaryRead(filesize) '获得上传文件的二进制数据
Response.BinaryWrite filedata '在浏览器上显示二进制数据
%>

分析浏览器上显示的上传文件的二进制代码,发现代码包括四个部分(若同时上传多个文件或文本框,则代码按上传的先后次序排列,格式相同),每一部分的内容是用回车换行符号来进行分隔的:

1)第一部分(起始标志)
-----------------------------7d329631b04d4
2)第二部分(文件说明)

Content-Disposition: form-data; name="file1"; filename="C:\Documents and Settings\Administrator\My Documents\Invitation.doc" Content-Type: application/msword

在此,我们可以获得上传文件的文件名称及绝对路径,也可以获得文件类型。这些信息是正确保存文件所不可缺少的。

3)第三部分(文件内容)

即文件的二进制内容,略。

4)第四部分(结束标志)

-----------------------------7d329631b04d4

结合第一部分和第四部分的内容来看,"-----------------------------7d329631b04d4"(每次上传,数值都不一样)起到了分割符的作用,它标志着一段数据(当有多个上传内容时)的开始和结束。从保存文件所需要的信息来讲,我们首先需要从第二部分数据的"filename"中获得文件名称,然后需要正确定位文件的起始位置,最后利用ASP技术将二进制文件用本来的文件名保存即可。若同时上传多个内容(如多个文本框和文件),也是按同样的方法处理,每部分的内容都包含在分割符之中,只是文本框和文件的表现形式稍有不同,这可以通过具体分析其二进制代码来了解。

3、利用ASP技术实现文件存储

上传文件代码的处理

1) 获得分割符代码

从上面的分析我们已经知道,分割符起到了分割多个数据段(包括文本框和各种类型的文件)的重要作用。前面已经分析过,分割符出现在第一个回车换行符号前。因此,通过下面这段程序就可获得分割符代码:

<%
newline=chrB(13) & chrB(10) 'newline表示二进制的回车符
filesize=Request.TotalBytes 'filesize是上传文件的大小
filedata=Request.BinaryRead(filesize) 'filedata是上传文件的二进制数据
divider=leftB(filedata,clng(instrb(filedata,newline))-1) 'divider是分割符
%>

注:因为这里处理的都是二进制字节码,因此,所有的函数都是使用它的二进制版本,加了"b "。

2) 获得文件(或文本框)内容

(1) 预备函数(将二进制串转化成字符串)

上传文件的内容不需要经过二进制向字符串的转换过程,直接保存就可。但是,若需提取文本框内容或文件的名称,就必须进行转换。因此,需要编写一个通用的,并且适用于汉字的转换函数。以下是该函数代码:

Function BtoS (bstr)
If not Is Null (bstr) Then
for i = 0 to lenb(bstr) - 1
bchr = midb(bstr,i+1,1)
If ascb(bchr)>127 Then '汉字是双字节,得两个字符一起处理
temp = temp&chr(ascw(midb(bstr, i+2, 1)&bchr))
i = i+1
Else
temp = temp&chr(ascb(bchr))
End If
next
End If
BtoS = temp
End Function

(2) 获得文件(或文本框)内容

在实际的WEB应用中,上传操作可能涉及多项内容,如多个文本框、多个文件等等。文件和文本框很好区分,文件的数据中包含了"filename="字串。因此,我们写了如下的通用函数,既可用于提取文件内容,又可提取文本框内容(需进行二进制转换):

Function getdata(byval data, byval divider, final) 'data表示二进制串;divider表示分割符;final表示数据的结束位置
filename=chrb(102)&chrb(105)&chrb(108)&chrb(101)&chrb(110)&chrb(97)&chrb(109)&chrb(101)&chrb(61)&chrb(34) '字符串"filename"的二进制表示
bncrlf=chrb(13)&chrb(10) '二进制的回车符
startpos = instrb(data,divider)+lenb(divider)+lenb(bncrlf) ' 开始位置
endpos = instrb(startpos,data, divider)-lenb(bncrlf) '结束位置
part1 = midb(data, startpos, endpos-startpos) '两个分割符之间的内容
firstline = midb(part1, 1, instrb(part1, bncrlf)-1) ' 内容之前的说明段
If (instrb(firstline,filename)=0) Then '若为文本框,获得文本框字符串内容
stemp=midb(part1,instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf),lenb(part1)-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
getdata=BtoS(stemp)
Else '若为文件,获得文件二进制内容
Getdata=midb (part1, instrb (part1, bncrlf&bncrlf)+lenb (bncrlf&bncrlf), lenb (part1)
-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
End If
Final=endpos
End function

在程序中直接调用该函数就可获得所需文件(或文本框)内容,如下所示:

<%
Content=getdata (data, divider, position)
%>

3) 获得文件名称
前面已经分析过了,上传文件数据流的"filename="字段里包含了文件的名称和绝对路 径。一般来说,我们只需提取出路径中的文件名即可,以下是程序代码:

<%
namepos=instrrev(B2S(firstline),chr(92)) 'firstline即上面获得的说明部分数据,chr(92)
表示"/"
filename=midb(firstline,namepos+1,lenb(firstline)-namepos-1) '获得文件名称
%>

利用ASP直接实现文件上传功能

传统的ASP程序员只能利用FILESYSTEMOBJECT对象对文本文件(.txt)进行移动、复制、删除等操作,若需处理二进制对象,则不得不采用本文前面介绍的那些方法来实现。但是,现在ASP中的ADO.STREAM对象可以同时操作文本对象和二进制对象(可以在http://www.microsoft.com/data下载),利用它就可以在ASP中直接实现文件上传功能。下面,我们就介绍其实现过程。

1)打开STREAM对象

对于SREAM对象而言,若要进行文件的保存,则必须是将该对象的全部内容进行保存。因此,我们必须要创建两个(或多个)STREAM对象,其中一个为源数据流,即接收初始的二进制数据;另一个为目的数据流,即接收来自经源数据流处理后的数据,并最终保存为所需的文件。

<%
set str=server.CreateObject("ADODB.Stream") 'str为源数据流
str.Mode=3 '设置打开模式,3为可读可写
str.Type=1 '设置数据类型,1为二进制数据
str.Open
set desc=server.CreateObject("ADODB.Stream") 'desc为目标数据流
desc.Mode=3
Desc.Type=1
desc.Open
%>

2)STEAM对象间内容的复制

在该部分,必须在源数据流中定位文件开始的位置,并且求出文件内容的长度,才能将文件正确的复制到目的数据流中,并且保存文件,程序代码如下:

<%
formdata=Request.BinaryRead(Request.TotalBytes) 'formdata为上传的所有内容
str.Write formdata ' 赋值源数据流
str.position=count-lenb(result)-2 'position指出文件的开始位置
str.to desc, lenb(filecotent) 'lenb(filecontent)表示文件的长度
desc.SaveToFile fullpath,2 '以fullpath指定的路径及名称保存文件
%>

3)关闭STEAM对象

编程完成后,应关闭并释放STEAM对象,如下所示:

<%
Desc. Close
Set desc=nothing
Str. Close
Set STR=nothing
%>

总结

本文给出了利用ASP直接实现文件上传的方法,在本单位自行开发的信息管理系统中得到了很好的应用。实践证明:与传统的几种文件上传方法相比,该方法更简便、更高效。

java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢

网络,想飞社区,在资讯里,找 WEB前端 分类,有一篇文章:AJAX JAVA 上传文件,可以参考,抱歉,贴不了地址。。。我只能这样说了

安卓编程,设计一个按钮,点击后进入图库选择视频或照片文件,选择后返回选择文件的路径放到一个stri

首先将自己的图片上传到网上相册
在将该图片地址,粘贴到贴吧图片栏

具体步骤参见:

空间相册中的图片.

要在空间相册添加图片,请依次操作:首先登陆网络空间--我的相册--添加图片,打开一个网页,按照提示操作即可,非常简单,一次最多可上传6张照片网络空间上传图片:

一般用户可拥有1G的上传空间。

上传照片:点击“相册列表”右侧“上传新照片”。
一次最多可上传6张照片,每张照片大小为小于3M;
照片格式为:JPG、GIF、PNG、BMP。
可以选择将照片放入某个相册。
也可以临时创建新的相册。

创建新相册:点击“相册列表”右侧“创建新相册”。
填写“相册名称”、“简介”选择“浏览权限”后新相册创建成功。

=====================================================================

没有网络空间请先创建,创建网络空间很简单,具体步骤和注意事项:

若您没有网络帐号,请在“网络空间”主页()点击“立即注册并创建我的空间”(页面右上部分)按照说明进行注册。 若您有网络帐号,请在登录框中输入您的用户名及密码,进行空间激活。

登录注册后为您的空间指定唯一的网址:

该网址为指定的唯一网址;
只允许汉字、字母、数字和下划线;
一旦申请成功即不可更改。
填写空间名称(最多为40个汉字),您可以在以后更改此标题。(详情参见设置—基本选项)

完成“激活您的空间”页面内容的填写,点击“创建空间”按钮,完成创建。

-------------------------------------------

多个免费上传图片空间上传图片网

图片上传后,如何发到贴吧:

如何贴图

简述:
在网络贴吧贴图非常简单,不过在贴图之前,首先需要在网上任意找到一张图片

第一步:
将鼠标移动到图片上,点击鼠标右键,选择“属性”。

--------------------------------------------------------------------------------

第二步:
这时会出现一个对话框,在对话框“地址(URL)”一项旁边,有一段很长的地址。将这段地址“复制”下来。

--------------------------------------------------------------------------------

第三步:
然后将刚刚“复制”的这段(URL)地址“粘贴”在网络贴吧发言区的“图片链接”一项当中,再填好贴子标题和内容,最后点击“发表贴子”。贴图成功!

返回页首

贴图注意事项

因为网络贴吧不支持直接在发贴时上传图片,所以在贴吧发贴时所贴出的图片必须是网络上已存在的图片,而不是电脑硬盘中存储的图片。
如果您希望将自己电脑中存有的图片拿到贴吧当中与大家分享,那么首先要将您电脑中的图片上传到该吧图片库(什么是图片库?)或者其它网站上,获取一个图片URL地址后就可以粘贴到网络贴吧上来。
对于已经开通图片库功能的贴吧,该吧吧主和图片小编(如何成为图片小编?)可以上传图片到该吧图片库。
贴吧目前只支持粘贴jpg、jpeg、gif、bmp这四种常见格式的图片。如果您粘贴的图片格式是这四种常见格式之外的,那么图片贴出后将无法显示。
* 如果还有问题,请到贴吧帮助吧去问问吧。

阅读全文

与编程系统如何上传图片相关的资料

热点内容
微信升级版本后无法播放腾讯视频 浏览:482
卖场广告的app哪里下载 浏览:377
灵狐网络视频下载 浏览:7
javaapr 浏览:561
苹果se天线在哪 浏览:359
投标文件一般存在哪里 浏览:911
哪个网站上卖的药真 浏览:642
iphone6plus联通版 浏览:262
如期app怎么样 浏览:515
java相对路径获取文件 浏览:451
word怎么字体变粗 浏览:406
怎么看office2016版本 浏览:378
怎么看手机上所有的app 浏览:794
惠州企业网站优化公司如何 浏览:155
iphone5铃声同步后找不到 浏览:245
苹果手机同步通话记录 浏览:877
win10联想自带ie卸载 浏览:309
linux将文件切换用户归属 浏览:158
数据线pd20什么意思 浏览:890
小米盒版本 浏览:582

友情链接