`
walnut
  • 浏览: 105160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

applet下载图片的实现

    博客分类:
  • java
阅读更多
问题:
由于安全性的限制applet在向客户端读写文件的时候需要证书验证,而考虑到BS结构不方便给在所有用户上安装证书认证,所以产生了问题。

解决方案:
1. Applet生成文件流;
2. Applet将文件流通过url连接传给服务器端;
3. 服务器端将文件流保存成服务器端指定目录的文件,为了防止文件名冲突,以当前时间的微秒数new Date().getTime()命名文件;
4. 服务器端将文件名回传给Applet;
5. Applet调用java Script 打开新的浏览器页面调用下载指定文件的url;
6. 利用smartUpload实现服务器端指定文件名文件的下载。

部分代码示例:
--------------------------------------------------------------------------------------------------------------------------------------
Applet端代码;
--------------------------------------------------------------------------------------------------------------------------------------
public void doOutPic(){
		try{
			Image image=null;
			BufferedImage imageBuffer = graph.getImage(Color.WHITE,10);
			
			URL url = new URL(getCodeBase(),"/unuba/dayActionGraphPicAction.do");
			URLConnection con = url.openConnection();
			con.setUseCaches(false);
			con.setDoOutput(true);
			con.setRequestProperty("Content-type", "application/octest-stream");
			// 写入对象
			OutputStream out = con.getOutputStream();
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);      
			encoder.encode(imageBuffer);   
			out.flush();
			out.close();
			DataInputStream in = new DataInputStream(con.getInputStream());
			ObjectInputStream objStream;
			objStream = new ObjectInputStream(in);
			String fileName = (String) objStream.readObject();
		    try {
		      //getAppletContext().showDocument(new URL("javascript:doAlert(\"" + fileName +"\")"));
		      URL destination=new URL(getCodeBase(),"/unuba/uba/downloadDayActionGraph.jsp?fileName="+fileName);
		      getAppletContext().showDocument(destination,"_blank");
		      }
		    catch (MalformedURLException me) {
		    	me.printStackTrace();
		    }
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

----------------------------------------------------------------------------------------------------------------------------------------
服务器端代码:
----------------------------------------------------------------------------------------------------------------------------------------
public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		//response.setContentType("application/octest-stream");   
		
		InputStream   input=null;   
		FileOutputStream output=null;
		byte[] buffer = new byte[1024];
        try{   
            input=request.getInputStream();
            Date now =new Date();
            String fileName=now.getTime()+".jpg";
            String path=request.getRealPath("/graphpic")+"/"+fileName;
            this.outPutFileName(response,fileName);
            output = new FileOutputStream(path);
            int b;
			while (true) {
				if (input.available() < 1024) {
					while ((b = input.read()) != -1) {
						output.write(b);
					}
					break;
				} else {
					input.read(buffer);
					output.write(buffer);
				}
			}
			input.close();
			//output.flush();
			output.close();
        }catch(Exception   e)   {   
            logger.error("can not get BufferedImage"); 
            e.printStackTrace();
            return null;
        } 
		
		return null;

	}
	
    // output the graph picture file name
	private void outPutFileName(HttpServletResponse response,String fileName){
	 try {
			if (fileName == null) {
				return;
			}
			OutputStream out;
			ObjectOutputStream objStream;
			out = response.getOutputStream();
			objStream = new ObjectOutputStream(out);
			objStream.writeObject((Object) fileName);

		} catch (Exception e) {
			logger.error("write output stream exception ", e);
		}
	}

----------------------------------------------------------------------------------------------------------------------------------------
smartUpload下载文件的代码:
----------------------------------------------------------------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=UTF-8" import="com.jspsmart.upload.*" %>
<%
	// 新建一个SmartUpload对象
	SmartUpload su = new SmartUpload();
	// 初始化
	su.initialize(pageContext);
	// 设定contentDisposition为null以禁止浏览器自动打开文件,

	//保证点击链接后是下载文件。
	su.setContentDisposition(null);
	// 下载文件
	String fileName=request.getParameter("fileName");
	if(fileName!=null){
		su.downloadFile("/graphpic/"+fileName);
	}
%>

  • jspsmartupload.jar (11.6 KB)
  • 描述: 上传下载文件用到的jar包
  • 下载次数: 126
分享到:
评论

相关推荐

    (java+applet) 实现 图片浏览小程序

    (java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序...

    Applet与图片

    本文将深入探讨Applet与图片处理的相关知识,包括如何在Applet中显示图片以及实现动态图片效果。 首先,让我们了解什么是Applet。Applet是Java的早期特性之一,它允许开发者创建能在客户端浏览器上执行的Java小程序...

    java小程序Applet显示图片

    总结起来,Java小程序Applet通过继承`Applet`类并利用`ImageIO`和`Graphics`类可以实现图片的显示。尽管Applet已逐渐被淘汰,但学习它的原理有助于理解早期的Web交互技术和Java图形处理基础。同时,了解现代替代技术...

    applet截取屏幕图片

    本文将深入探讨如何利用Java Applet来实现屏幕截图功能,并将其保存到客户端。 首先,我们需要理解Java Applet的工作原理。Applet是在HTML页面中嵌入的Java代码,由Java虚拟机(JVM)在用户的Web浏览器上执行。通过...

    图片浏览小程序(java+applet)

    3. 用户交互:Applet支持事件监听,我们可以添加`MouseListener`和`MouseMotionListener`来处理用户的点击和拖动操作,实现图片的切换和缩放功能。 4. 图片处理:如果需要进行图片的裁剪、缩放等操作,可以使用`...

    applet图片扫描程序

    Applet图片扫描程序是一种基于Java Web的技术,用于在网页中实现图像的扫描和展示功能。Applet是Java的一种特殊类型的应用程序,它可以在用户的Web浏览器中运行,为用户提供交互式的体验,比如处理图像、视频或者...

    Applet鸭子的移动

    1. Java源代码文件(.java):实现Applet类,包括鸭子的移动逻辑和双缓存的使用。 2. 图片资源文件(.gif或.png):用于表示鸭子的图形。 3. HTML文件(.html):包含Applet的嵌入代码,用于在浏览器中展示Applet。 ...

    java+applet 图片浏览小程序.zip

    在这个"java+applet 图片浏览小程序.zip"压缩包中,我们可以预见到一个使用Java Applet技术实现的图片浏览程序。 1. **Java Applet基础知识**: - Java Applet是一种基于Java的小程序,它嵌入到HTML页面中,由Java...

    一个Java Applet的动态显示图片的小程序

    简单的一个Java Applet的动态显示图片的小程序。将资源内的图片放置到E盘根目录下。如果想换图片,记得修改width和heigh的初始值,值为图片的宽和高。如果你对动画有兴趣,可以试着稍微修改一下本程序(程序里有相关...

    t用Applet来实现动态图

    我把class文件放入web-inf/class/中,html中的代码... ...web-inf是一个特殊的目录,不能把applet放入其中,但可以在顶层建一个目录, 如 good/applet/,然后CODEBASE = "good/applet/" 同时把class所在的包拷入这个目录

    java 透明图片的实现(applet)

    本篇文章将详细介绍如何在Java Applet中实现透明图片的功能。 首先,我们来看`applet6.java`这个文件,它很可能是我们的主Applet类。在Java Applet中,通常会重写`paint()`或`paintComponent()`方法来绘制图形,...

    Java_Applet

    "Applet综合案例_files"目录可能包含这些案例所需的资源文件,如图片、字体或其他外部数据,这些资源对于Applet的正常运行至关重要。 学习Java Applet编程,你需要掌握Java基础,包括面向对象编程、异常处理、IO流...

    Java连接SQL+SERVER+2005数据库配置讲解,Java下Applet实现图片图片百叶窗效果

    在本文中,我们将深入探讨如何使用Java连接到SQL Server 2005数据库,并通过Applet实现图片的百叶窗效果。这两个主题都是Java开发中的重要知识点,对于理解和实践Java Web应用程序开发至关重要。 首先,让我们关注...

    图片浏览小程序(java+applet).zip

    【标题】:“图片浏览小程序(java+applet)”项目解析 【描述】中提到的这个项目是一个基于Java技术的图片浏览应用程序,它结合了Java Applet技术,为用户提供了一个方便、直观的方式来查看和管理图片。该项目不仅...

    基于Java Applet的图片浏览小程序设计与实现(源码)

    含有Applet的网页的HTML文件代码中部带有&lt;applet...在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit)

    Applet实现的ckeditor粘贴word图片且图片自动上传

    最近用APPLET写了一个可以实现ckeditor中粘贴word图片且图片自动上传的插件,大家看看怎么样: 演示地址: http://test.reremouse.com/wordimg/ 插件使用JAVA APPLET技术开发,需要配合JavaScript使用,可以...

    基于java+applet实现的图片浏览小程序 完整源码分享

    基于java+applet实现的图片浏览小程序 完整源码分享

    Java Applet创建与执行 ppt

    另外,Applet还可以通过`AppletContext`接口与浏览器交互,实现如打开URL、弹出对话框等功能。 总的来说,Java Applet是Java早期为Web增强交互性而设计的技术,虽然现代Web开发中已经较少使用,但理解Applet的工作...

    图片浏览小程序(java+applet)的设计

    一个简单的图片浏览小程序可以包括以下功能: 图片展示功能:该功能用于...实现图片展示功能:使用Java Applet技术,实现图片列表的显示和原图预览功能,支持手势缩放、拖动等操作。 实现图片管理功能:使用Java A

    Java项目源码之图片浏览小程序的实现(java+applet).zip

    图片浏览小程序是一个基于Java和Applet技术实现的简单图片查看器,旨在提供用户浏览本地图片的功能。以下是该小程序的一些关键特点和功能: 系统架构: 单机应用:该小程序为单机应用,不涉及客户端-服务器通信,...

Global site tag (gtag.js) - Google Analytics