`

Ajax 实现上传图片即时预览功能

阅读更多

 

原文出自:http://www.pm-road.com/index.php/2014/07/31/50/

很多网站在上传头像或照片的时候,都会有一个预览功能,结合自身体验将该功能实现一下;要求:图片保存到数据库
之前,我在做项目的时候,有一个功能就是要求上传的图片要即时显示,很多网站都会有这样的案例,其中的代码逻辑大多为把图片传到服务器上之后,返回图片的 物理路径,不过,我们当时使用的框架为ExtJS 4.1,而且因为涉及一些安全原因,图片在上传过程中,服务器上不能出现任何明文,所以在当时做项目的过程中,所有的数据包括文本文件、图片等一律保存到 了Oracle中。接下来开始把此功能梳理一下。

实现逻辑:
1:首先,要实现ajax上传文件的功能;
2:将上传的文件保存至数据库中;
3:ajax返回一个UUID,至前台;
4:前台拿到此UUID后,重新发送图片请求,将数据库中的的字节数据取出,生成图片;

实现方法:
1:因为ajax属于异步请求,要想答到ajax可以上传文件的目的,还需要下载 jquery 的插件 ajaxfileupload.js文件;该js的原理是在上传文件的同时,自动生成一个iframe对象,里面有一个form表单,通过该form表单进行上传文件的功能;
2:后台拿到文件后,通过流的方式,保存至oracle数据库,保存的同时生成一个UUID,该UUID做为保存至数据库中的主键;
3:将该UUID返回到前台;
4:在ajax中,拿到返回的UUID,然后新建一个image html dom document对象,将其中的属性src通过UUID指向该图片的url,即可。

注意:网上好多教程,是把图片的路径以物理形式返回,即类似于src = “http://wwww.pm-road.com/upload/X.pic” ,此种做法是把图片以物理方式存到了服务器上,我这里是把图片存到数据库里面,存储的并非是图片的路径,而是图片的字节码。

以下是部分代码:
至于ajaxfileupload.js如何上传文件到服务器,这里不做过多的代码,网上有很多;
当服务器收到该文件后:

========================保存文件到数据库的代码========================================
File uploadFile = new File();//这里这个uploadFile 就是上传的文件,这里不写路径什么的了。
InputStream is = new FileInputStream(uploadFile);

//blob类型是oracle中自带的一个文件处理类型,其中的session 是hibernate中的
//session,而非是浏览器创建的request、session对象;
//所以此环境是在hibernate中完成;
Blob blob = session.getLobHelper().createBlob(is,0);
//FileDemo 是你自己的一个实体类,该实体类主要用于hibernate的映射关系。
FileDemo demo = new FileDemo();
//该实体类中一个属性,该属性就是Oracle的Blob类型
demo.setFileBlob(blob);
//生成一个随机ID,用于查询该对象
String random = UUID.randomUUID().toString();
demo.setId(random);
//执行hibernate中session的save()方法 ,将该对象保存至数据库;
session.save(demo);
//流用完之后,一定要关闭
is.close();
=====================通过UUID请求数据库中的图片====================================

//前台收到uuid后,再返回给后台
String uuid = request.getParameter(“uuid”);
//通过hibernate 查询已保存的图片
FileDemo image = session.get(uuid);
//将查询出来的BLob转换成inputstream
InputStream is = image.getFileBlob().getBinaryStream();
ServletOutPutStream os = response.getOutPutStream();
byte[] _b = new byte[1024];
int temp = 0;
while((temp = is.read(_b)>0){
os.write(_b,0,temp);
}
is.close();
if(os != null){
os.close()
}
//将代码这样处理之后,就可以,前台就能自动生成图片,不用其它处理

=================文件上传之后,前台拿到UUID后,处理方法 ======================

var uuid = ajaxa得到的uuid;
//使用js 声明一个img dom对象;
var image = “<img src=‘downloadPic.action?uuid=uuid’ />”;
//要即时显示图片的div id,将div中的html 赋值为image对象;就可以自动显示出来
$(“#divid”).html(image);

分享到:
评论

相关推荐

    图片上传即时预览

    本项目是基于ASP.NET后端技术和jQuery前端库实现的,下面我们将深入探讨这两个技术以及如何结合它们来创建图片上传即时预览功能。 首先,ASP.NET是由微软开发的一款强大的Web应用程序框架,它构建在.NET Framework...

    前端页面图片上传即时预览功能

    在前端开发中,图片上传即时预览功能是一个常见的需求,特别是在网页表单、社交媒体平台或者内容编辑器等场景。这个功能允许用户在选择图片后,能够在页面上立即看到即将上传的图片,提供一种直观的反馈,提升用户...

    ajax多文件上传图片文件带预览功能

    通过Ajax(异步JavaScript和XML)技术,我们可以实现无刷新的文件上传,同时在用户选择文件后即时预览图片,提升交互体验。 1. **Ajax基础**: Ajax的核心在于创建XMLHttpRequest对象,它是浏览器提供的API,允许...

    PHP + jQuery实现ajax文件即时上传 预览 配套资源

    在本文中,我们将深入探讨如何使用PHP和jQuery的Ajax技术实现文件即时上传和预览功能。这个主题主要涉及JavaScript库jQuery、jQuery Form Plugin以及PHP后端处理,这些都是现代Web开发中不可或缺的部分。以下是对每...

    支持图片上传及实时显示,可设置显示图片的大小。由php、Ajax、javascript开发

    这个项目是用PHP、Ajax和JavaScript这三种技术实现的,允许用户上传图片并即时预览,同时还可以调整显示的图片大小。接下来,我们将深入探讨这些技术以及它们在实现此功能中的角色。 **PHP** 是一种广泛使用的...

    jquery实现图片即时上传

    `jQuery`是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互,因此使用`jQuery`实现图片即时上传是一种常见且高效的方法。本文将深入探讨如何利用`jQuery`来创建一个兼容多种浏览器,包括...

    图片上传即时预览效果

    实现图片上传即时预览效果主要涉及以下几个关键技术点: 1. **HTML5 File API**:File API是HTML5中的一项重要特性,它提供了在浏览器环境中读取和操作文件的能力。通过创建`&lt;input type="file"&gt;`元素,用户可以...

    JAVA AJAX 图片批量上传并返回上传后的文件路径在客户端显示预览

    在IT行业中,图片批量上传是一项...通过这种方式,用户可以在不离开当前页面的情况下完成图片批量上传,并即时预览上传结果,大大提升了用户体验。开发者可以根据自身需求调整和扩展这个系统,以适应不同的应用场景。

    asp.net实现图片上传及时预览

    在ASP.NET中实现图片上传及时预览是一项常见的需求,它能提供用户友好的交互体验,让用户在上传图片后能够即时查看效果。以下是对这个主题的详细解析。 首先,我们需要了解ASP.NET的基本架构。ASP.NET是Microsoft...

    java实现jQuery带删除功能多图片上传预览插件

    3. **图片预览**: 使用HTML5的FileReader API,可以在用户选择文件后即时预览图片。该API允许在上传之前读取文件内容,创建一个数据URL,然后在img标签的src属性中设置这个URL,实现预览效果。 4. **删除功能**: ...

    ASP.Net+C#+AJax+图片剪载上传

    AJAX上传则允许在后台处理文件,避免了页面刷新,提高了用户体验。 6. **CutAndUpload**:这个文件名可能代表项目的核心功能实现,包括客户端的图片剪裁脚本和服务器端处理图片上传的代码。可能包含HTML页面、CSS...

    JQUERY上传图片预览功能

    在本文中,我们将深入探讨如何利用jQuery实现一个图片上传预览功能,这是一个用户友好的特性,尤其在处理图像上传时,能够提供即时的反馈,提升用户体验。 首先,我们需要理解jQuery的核心概念。jQuery通过一种简洁...

    上传图片无刷新预览

    无刷新上传预览功能让用户在选择图片后能够即时看到预览效果,而无需等待整个页面重新加载。这通常通过JavaScript、AJAX(异步JavaScript和XML)以及可能的服务器端技术如JSP(JavaServer Pages)来实现。现在我们...

    ajax图片上传 包含切图等效果 php版

    本项目是关于使用Ajax实现图片上传,并结合切图功能的PHP版实现,适用于那些需要用户上传并预览图片的应用场景。 首先,我们要理解Ajax的核心概念。Ajax并非一种单独的技术,而是一种使用一系列技术组合的方式,...

    uploadify实现多图片上传并预览Java版

    在这个"uploadify实现多图片上传并预览Java版"的项目中,我们将探讨如何使用uploadify与后端的Java服务进行交互,以实现在网页上选择多张图片,即时预览并上传至服务器。 首先,uploadify插件依赖jQuery库,因此在...

    jquery 图片预览浏览功能

    2. **图片预览**:预览功能通常涉及到在用户选择或上传图片后,即时显示图片的小缩略图。这可以通过创建一个隐藏的图片容器,然后将待显示的图片源设置为该容器的`src`属性来实现。当图片加载完成后,可以将其显示...

    .net图片异步上传并先预览

    在.NET开发中,图片异步上传并实现预览功能是一项常见的需求,特别是在Web应用中,用户需要上传图片并即时查看效果。这个功能可以提供更好的用户体验,因为它减少了页面刷新的次数,提高了交互性。以下是关于".net...

    uploadify图片上传预览删除

    预览功能的实现通常包括选择文件后即时显示缩略图,以及调整图片尺寸以适应预览区域,同时保持合适的比例,提供更好的视觉效果。 删除功能则让用户有机会在上传前取消选择,或者在上传后删除已上传的图片。这通常...

    AJAX实现图片预览与上传及生成缩略图的方法

    在本文中,我们将探讨如何使用AJAX实现图片预览、上传和生成缩略图的功能,以便在用户上传图片时提供即时反馈,同时处理其他表单数据。这一过程涉及到前端JavaScript和后端处理,通常用于提高用户体验,使得用户无需...

    PHP+jQuery+Ajax多图片上传

    在多图片上传中,Ajax实现了用户选择图片后即时发送到服务器,而无需刷新整个页面。 **实现过程:** 1. **前端界面**:使用HTML5的`&lt;input type="file" multiple&gt;`创建多选文件输入框,jQuery监听其`change`事件,...

Global site tag (gtag.js) - Google Analytics