一种图片上传方法及装置与流程

文档序号:12829298阅读:293来源:国知局
一种图片上传方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种图片上传方法及装置。



背景技术:

随着计算机技术的不断发展与进步,计算机被广泛应用于生活及生产中的各个领域,在计算机使用过程中,经常会遇到通过网页将存储于本地计算机的图片上传至服务器的情况。

目前,在需要将存储于本地计算机上的图片上传至服务器时,由用户手动选择本地计算机上的图片,点击上传按钮将图片上传至服务器。

针对于现有通过网页将图片上传至服务器的方法,需要用户手动完成图片选择和上传按钮点击的动作,但是在一些应用场景下图片是不需要进行选择的,比如将摄像头拍摄的监控照片全部上传至服务器,此时用户仍需要通过手动操作的方式不断重复选择本地计算机上的图片及点击上传按钮的动作,造成用户体验较差。



技术实现要素:

本发明实施例提供了一种图片上传方法及装置,能够提升用户的体验。

第一方面,本发明实施例提供了一种图片上传方法,在外部的客户端上加载小应用程序applet,还包括:

接收所述客户端对触发web页面进行访问的触发事件,其中,所述触发web页面的超文本标记语言html文件代码中包括applet标记;

根据所述触发事件,从所述applet中获取图片上传applet处理类;

通过所述图片上传applet处理类,对所述客户端上的待上传图片进行封装;

通过超文本传输协议http将封装后的所述待上传图片上传至外部的服务器。

优选地,

所述在外部的客户端上加载小应用程序applet,包括:

对所述客户端访问web页面的过程进行监测;

判断所述客户端是否为首次访问触发web页面;

如果是,从所述服务器上获取所述applet,并将所述applet加载到所述客户端上。

优选地,

在所述将所述applet加载到所述客户端上之后,进一步包括:

对所述applet进行编译形成javaclass文件,并将所述javaclass文件嵌入到所述触发web页面,以在所述触发web页面再次被打开时将所述applet加载到所述客户端。

优选地,

所述从所述applet中获取图片上传applet处理类,包括:

通过名称属性在所述applet中进行索引,获取图片上传applet;

通过存储路径属性在所述图片上传applet中进行索引,获取用于图片上传的java归档文件jar包的路径;

通过编码属性在所述jar包的路径中进行索引,获取所述图片上传applet处理类。

优选地,

所述通过所述图片上传applet处理类对所述客户端上的待上传图片进行封装,包括:

调用所述图片上传applet处理类的图片上传方法,创建抽象类httpurlconnection对象,通过所述httpurlconnection对象对所述客户端上的待上传图片进行封装。

第二方面,本发明实施例还提供了一种图片上传装置,包括:加载单元、获取单元、封装单元及上传单元;

所述加载单元,用于在外部的客户端上加载小应用程序applet;

所述获取单元,用于接收所述客户端对触发web页面进行访问的触发事件,并根据所述触发事件从所述加载单元加载的所述applet中获取图片上传applet处理类;其中,所述触发web页面的超文本标记语言html文件代码中包括applet标记;

所述封装单元,用于通过所述获取单元获取到的所述图片上传applet处理类,对所述客户端上的待上传图片进行封装;

所述上传单元,用于通过超文本传输协议http将所述封装单元封装后的所述上传图片上传至外部的服务器。

优选地,

所述加载单元,用于对所述客户端访问web页面的过程进行监测,判断所述客户端是否为首次访问触发web页面,如果是,从所述服务器上获取所述applet,并将所述applet加载到所述客户端上。

优选地,

该图片上传装置进一步包括:嵌入单元;

所述嵌入单元,用于对所述加载单元加载的所述applet进行编译形成javaclass文件,并将所述javaclass文件嵌入到所述触发web页面,以在所述触发web页面再次被打开时将所述applet加载到所述客户端。

优选地,

所述获取单元包括:获取子单元;

所述获取子单元,用于通过名称属性在所述applet中进行索引,获取图片上传applet;通过存储路径属性在所述图片上传applet中进行索引,获取用于图片上传的java归档文件jar包的路径;通过编码属性在所述jar包的路径中进行索引,获取所述图片上传applet处理类。

优选地,

所述封装单元,用于调用所述图片上传applet处理类的图片上传方法,创建抽象类httpurlconnection对象,通过所述httpurlconnection对象对所述客户端上的待上传图片进行封装。

本发明实施例提供了一种图片上传方法及装置,在客户端上加载applet后,当客户端对包括有applet标记的触发web页面进行访问时,从所加载的applet中获取图片上传applet处理类,图片上传applet处理类能够对客户端上的待上传图片进行封装,进而可以通过http将封装后的待上传图片上传至服务器。由此可见,当客户端对触发web页面进行访问时,如果客户端上存在有待上传的图片,则自动通过图片上传applet处理类对待上传图片进行封装,并上传至服务器,图片上传过程无需用户手动操作,从而提升了用户的体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种图片上传方法的流程图;

图2是本发明另一个实施例提供的一种图片上传方法的流程图;

图3是本发明一个实施例提供的一种图片上传装置所在设备的示意图;

图4是本发明一个实施例提供的一种图片上传装置的示意图;

图5是本发明另一个实施例提供的一种图片上传装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种图片上传方法,该方法可以包括以下步骤:

步骤101:在外部的客户端上加载小应用程序applet;

步骤102:接收所述客户端对触发web页面进行访问的触发事件,其中,所述触发web页面的超文本标记语言html文件代码中包括applet标记;

步骤103:根据所述触发事件,从所述applet中获取图片上传applet处理类;

步骤104:通过所述图片上传applet处理类,对所述客户端上的待上传图片进行封装;

步骤105:通过超文本传输协议http将封装后的所述待上传图片上传至外部的服务器。

本发明实施例提供了一种图片上传方法,在客户端上加载applet后,当客户端对包括有applet标记的触发web页面进行访问时,从所加载的applet中获取图片上传applet处理类,图片上传applet处理类能够对客户端上的待上传图片进行封装,进而可以通过http将封装后的待上传图片上传至服务器。由此可见,当客户端对触发web页面进行访问时,如果客户端上存在有待上传的图片,则自动通过图片上传applet处理类对待上传图片进行封装,并上传至服务器,图片上传过程无需用户手动操作,从而提升了用户的体验。

在本发明一个实施例中,步骤101中在客户端上加载applet时,对客户端访问web页面的过程进行监测,针对于每一次访问过程进行监测,判断客户端是否为首次访问触发web页面,如果是,则从服务器上获取applet,并将获取到的applet加载到客户端上。

具体地,当web页面的html文件代码中包括applet标记时,说明该web页面可以调用applet,当客户端首次对html文件代码中包括applet标记的触发web页面进行访问时,从服务器下载applet,并将下载的applet加载到客户端上。从而在客户端上存在待上传图片时,利用applet中包括的图片上传applet处理类对待上传图片进行封装,进而将待上传图片上传到服务器上。这样,在客户端对触发web页面进行访问过程中,每当客户端上出现待上传图片时,待上传图片均能够被自动上传至服务器,整个过程均无需人工操作,保证用户具有较好的体验。

在本发明一个实施例中,步骤101中在客户端上加载applet后,通过对applet进行编译形成javaclass文件,并将所形成的javaclass文件嵌入到触发web页面中。

具体地,在将applet加载到客户端上之后,由客户端对applet进行编译形成javaclass文件,并将javaclass文件嵌入到触发web页面中,以后每次客户端访问html文件代码中包括applet标记的触发web页面时,applet都会随着触发web页面加载到客户端中进行运行。这样,applet加载到客户端后,下次再次调用时,无需重新从服务器加载,由于节省了从服务器重新下载applet的时间,从而可以提高图片上传的速率。

在本发明一个实施例中,在接收到客户端对触发web页面进行访问的触发时间后,首先,通过名称(name)属性在applet中进行索引,找到用于上传图片至服务器的图片上传applet;然后,通过存储路径(archive)属性在图片上传applet中进行索引,找到用于上传图片至服务器的jar包的路径,其中jar包中封装有获取客户端图片数据相关代码;最后通过编码(code)属性在jar包括的路径下进行索引,获得图片上传applet处理类。

具体地,通过applet的name属性imagesave找到用于上传图片到服务器的图片上传applet,通过archive属性找到imagesave.jar的路径,进而通过code属性找到applet的处理类imagesave,处理类imagesave即为图片上传applet处理类。由于将获取客户端图片数据相关代码都封装到imagesave.jar中,只需要引入相应的jar包即可在页面中使用,具有良好的易用性和兼容性,从而提高了本发明实施例所提供的图片上传方法的适用性。

在本发明一个实施例中,步骤104利用图片上传applet处理类对待上传图片进行封装时,调用图片上传applet处理类的图片上传方法,创建抽象类httpurlconnection对象,通过httpurlconnection对象对客户端上的待上传图片进行封装。

具体地,由于httpurlconnection是一种多用途、轻量级的http客户端,适用于大多数的应用程序,支持缓存功能,具有良好的易用性和扩展性,因此,调用图片上传applet处理类的图片上传方法创建httpurlconnection对象后,通过httpurlconnection对象对待上传图片进行封装的方法,可以适用于各种格式的待上传图片以及各种类型的客户端,进一步提高了该图片上传方法的适用性。

下面以粮库系统对车辆过磅图片进行上传为例,对本发明实施例所提供的图片上传方法作进一步详细说明,如图2所示,该方法可以包括以下步骤:

步骤201:访问触发web页面,将applet从服务器加载到客户端。

在本发明一个实施例中,对客户端访问web页面的过程进行监控,当监测到客户端首次对html(超文本标记语言)文件代码中包括applet标记的触发web页面进行访问时,从服务器获取applet,并将获取到的applet加载到客户端。

例如,在粮库中,为了避免粮食过磅过程中存在的风险,在载粮车辆通过地磅时,位于地磅之前和之后的两个摄像头捕捉载粮车辆过磅过程中的图片,并将采集到的图片上传至服务器,用于作为粮款结算的凭证。以粮库管理软件为客户端,称重页面作为触发web页面。当粮库管理软件首次访问称重页面时,从与粮库管理软件相连的服务器上下载applet,并将所下载的applet加载到粮库管理软件上。

步骤202:对applet进行编译形成javaclass文件,并将javaclass文件嵌入到触发web页面。

在本发明一个实施例中,在客户端上加载applet时需要对applet进行编译,applet经编译后产生javaclass文件,将所产生的javaclass文件嵌入到触发web页面中。

例如,在粮库管理软件上加载applet时,需要对applet进行编译,将编译所产生的javaclass文件嵌入到称重页面后,以后每次访问称重页面时,将自动加载applet。

步骤203:接收图片上传触发,从applet中获取图片上传applet处理类。

在本发明一个实施例中,接收到图片上传触发后,通过name属性imagesave找到用于上传图片到服务器的图片上传applet,通过archive属性找到imagesave.jar的路径,进而通过code属性找到applet的处理类imagesave。处理类imagesave即为图片上传applet处理类。其中,图片上传触发可以是对触发web页面进行访问,即当客户端访问触发web页面时,触发从applet中获取图片上传applet处理类的动作。

例如,当粮库管理软件访问称重页面时,从加载在粮库管理软件上的applet中获取图片上传applet处理类。

步骤204:通过图片上传applet处理类对客户端上的待上传图片进行封装。

在本发明一个实施例中,在获取到图片上传applet处理类后,调用图片上传applet处理类的图片上传方法saveimage(),创建httpurlconnection对象,设置相关参数,创建输入输出流对象,将客户端上待上传图片的信息读取到输出流中,设置要发送给服务器的http请求地址。

例如,调用图片上传applet处理类的上传方法,创建httpurlconnection对象,将输入对象设置为与粮库管理软件相连的服务器,将输出对象设置为粮库管理软件,将摄像头采集到的车辆过磅图片1和车辆过磅图片2的信息读取到输出流中。

步骤205:通过http将封装后的待上传图片上传至服务器。

在本发明一个实施例中,将客户端上待上传图片的信息读取到输出流中,并完成相应的设置之后,发送http请求到服务器,将图片信息以输出流的形式发送给服务器。

例如,粮库管理软件向服务器发送http请求,将车辆过磅图片1和车辆过磅图片2的图片信息以输出流的形式发送给服务器。

步骤206:服务器解析客户端发送的http请求,将图片保存到服务器。

在本发明一个实施例中,服务器获取客户端传输的图片输入流数据,设置好图片保存路径及文件名后,将待上传图片存储到指定的文件夹下。

例如,服务器接收到粮库管理软件传输的图片输出流数据后,对粮库管理软件上传的车辆过磅图片1和车辆过磅图片2进行存储,以备相应车辆进行两款结算时使用。

在本发明一个实施例中,系统触发上传功能后,获取用于上传图片到服务器的图片上传applet处理类的过程可以通过脚本代码实现,具体可以包括以下代码:

<appletcode="imagesave.class"

archive="<loushang:uipath/>jsp/genersoft/pub/applet/ecard/imagesave/imagesave.jar"

name="imagesave"

height="0"//设置applet为隐藏

width="0"

hspace="0"

vspace="0">

</applet>。

在本发明一个实施例中,对待上传图片进行封装,并发送http请求到服务器的过程也可以通过脚本代码实现,具体可以包括以下代码:

//定义客户端发送给服务器的保存图片的http请求地址

stringurl=sinopath+"imagesavecmd.cmd?method=imagesave&djnm="+djnm;

//将url封装成url对象

urlurlobj=newurl(url);

//建立连接

httpurlconnectioncon=(httpurlconnection)urlobj.openconnection();

//设置参数

con.setrequestmethod("post");

con.setdoinput(true);

con.setdooutput(true);

con.setusecaches(false);

con.setrequestproperty("connection","keep-alive");

con.setrequestproperty("charset","utf-8");

con.setrequestproperty("content-type","multipart/form-data");

//创建输出流对象

outputstreamout=newdataoutputstream(con.getoutputstream());

//创建输入流对象,从本地计算机指定文件读取数据

datainputstreamin=newdatainputstream(newfileinputstream(file));

intbytes=0;

byte[]bufferout=newbyte[1024];

//读取客户端文件数据写到输出流对象中

while((bytes=in.read(bufferout))!=-1){

out.write(bufferout,0,bytes);

}

//关闭输入输出流

in.close();

out.flush();

out.close();

//将封装好图片数据的完整的http请求发送到服务器。

bufferedinputstreaminputstream=newbufferedinputstream(con.getinputstream())。

在本发明一个实施例中,服务器解析客户端发送的http请求,保存图片到服务器的过程也可以通过脚本代码实现,具有可以包括以下代码:

//获取服务器路径

stringfilepath=req.getsession().getservletcontext().getrealpath("/");

filefile=newfile(filepath);

if(!file.exists()){

file.mkdirs();

}

try{

stringtime=datetool.getcurrenttimemillisasstring("yyyymmddhhmmss");

intv=0;

//获取输入流

bufferedinputstreaminputstream=newbufferedinputstream(req.getinputstream());

stringdjnm=req.getparameter("djnm");

//设置图片保存路径及文件名

filepath=filepath+djnm+".jpeg";

byte[]bytes=newbyte[1024];

fileoutputstreamfos=newfileoutputstream(filepath);

bufferedoutputstreambos=newbufferedoutputstream(fos,1024*1024*5);

byte[]data=newbyte[1024*1024];//1mb

intlen;

//上传图片到服务器的指定文件夹下

while((len=inputstream.read(data,0,data.length))!=-1){

bos.write(data,0,len);

}

//手动清空缓冲空间

bos.flush();

//关闭输入输出流

inputstream.close();

bos.close();

}catch(ioexceptione){

system.out.println(e.getmessage());

}。

如图3、图4所示,本发明实施例提供了一种图片上传装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的图片上传装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的图片上传装置,包括:加载单元401、获取单元402、封装单元403及上传单元404;

所述加载单元401,用于在外部的客户端上加载小应用程序applet;

所述获取单元402,用于接收所述客户端对触发web页面进行访问的触发事件,并根据所述触发事件从所述加载单元401加载的所述applet中获取图片上传applet处理类;其中,所述触发web页面的超文本标记语言html文件代码中包括applet标记;

所述封装单元403,用于通过所述获取单元402获取到的所述图片上传applet处理类,对所述客户端上的待上传图片进行封装;

所述上传单元404,用于通过超文本传输协议http将所述封装单元403封装后的所述上传图片上传至外部的服务器。

在本发明一个实施例中,所述加载单元401用于对所述客户端访问web页面的过程进行监测,判断所述客户端是否为首次访问触发web页面,如果是,从所述服务器上获取所述applet,并将所述applet加载到所述客户端上。

在本发明一个实施例中,该图片上传装置进一步可以包括:嵌入单元505;

嵌入单元505,用于对所述加载单元401加载的所述applet进行编译形成javaclass文件,并将所述javaclass文件嵌入到所述触发web页面,以在所述触发web页面再次被打开时将所述applet加载到所述客户端。

在本发明一个实施例中,所述获取单元402包括:获取子单元;

所述获取子单元,用于通过名称属性在所述applet中进行索引,获取图片上传applet;通过存储路径属性在所述图片上传applet中进行索引,获取用于图片上传的java归档文件jar包的路径;通过编码属性在所述jar包的路径中进行索引,获取所述图片上传applet处理类。

在本发明一个实施例中,所述封装单元403用于调用所述图片上传applet处理类的图片上传方法,创建抽象类httpurlconnection对象,通过所述httpurlconnection对象对所述客户端上的待上传图片进行封装。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明一个实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述各个实施例提供的图片上传方法。

本发明一个实施例还提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述各个实施例提供的图片上传方法。

综上所述,本发明各个实施例提供的图片上传方法及装置,至少具有如下有益效果:

1、在本发明实施例提供的图片上传方法及装置中,在客户端上加载applet后,当客户端对包括有applet标记的触发web页面进行访问时,从所加载的applet中获取图片上传applet处理类,图片上传applet处理类能够对客户端上的待上传图片进行封装,进而可以通过http将封装后的待上传图片上传至服务器。由此可见,当客户端对触发web页面进行访问时,如果客户端上存在有待上传的图片,则自动通过图片上传applet处理类对待上传图片进行封装,并上传至服务器,图片上传过程无需用户手动操作,从而提升了用户的体验。

2、在本发明实施例提供的图片上传方法及装置中,在客户端首次访问html文件代码中包括applet标记的触发web页面时,从服务器下载applet并加载到客户端上,在客户端上存在待上传图片时,利用applet中包括的图片上传applet处理类对待上传图片进行封装,进而将待上传图片上传到服务器上。这样,在客户端对触发web页面进行访问过程中,每当客户端上出现待上传图片时,待上传图片均能够被自动上传至服务器,整个过程均无需人工操作,保证用户具有较好的体验。

3、在本发明实施例提供的图片上传方法及装置中,在将applet加载到客户端上之后,由客户端对applet进行编译形成javaclass文件,并将javaclass文件嵌入到触发web页面中,以后每次客户端访问html文件代码中包括applet标记的触发web页面时,applet都会随着触发web页面加载到客户端中进行运行。这样,applet加载到客户端后,下次再次调用时,无需重新从服务器加载,由于节省了从服务器重新下载applet的时间,从而可以提高图片上传的速率。

4、在本发明实施例提供的图片上传方法及装置中,将获取客户端图片数据相关代码都封装到imagesave.jar中,在获取图片上传applet处理类时,只需要引入相应的jar包即可在页面中使用,具有良好的易用性和兼容性,从而提高了本发明实施例所提供的图片上传方法的适用性。

5、在本发明实施例提供的图片上传方法及装置中,httpurlconnection是一种多用途、轻量级的http客户端,适用于大多数的应用程序,支持缓存功能,具有良好的易用性和扩展性,因此,调用图片上传applet处理类的图片上传方法创建httpurlconnection对象后,通过httpurlconnection对象对待上传图片进行封装的方法,可以适用于各种格式的待上传图片以及各种类型的客户端,进一步提高了该图片上传方法的适用性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1