`

flex上传图片 server端servlet存储图片到本地

    博客分类:
  • Flex
 
阅读更多

 

http://www.blogjava.net/youngturk/archive/2012/09/11/387509.html

 

首先下载 commons-fileupload-1.2.1.jar和commons-io-1.1.jar 
flex端代码: 


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout
="absolute"
                xmlns
="*"
                creationComplete
="init();">
    
<mx:Script>
        
<![CDATA[
            
import flash.events.*;

            
import mx.controls.Alert;
            
import mx.events.CloseEvent;
            
import mx.managers.CursorManager;

            
private var file:FileReference;
            
private var byteArray:ByteArray;
            
private var bitmapData:BitmapData;
            
private var loader:Loader=new Loader();

            
private function init():void
            
{
                Security.allowDomain("*");
                file=new FileReference();
                file.addEventListener(Event.COMPLETE, fileReferenceCompleteHandler);
                file.addEventListener(Event.SELECT, fileReferenceSelectHandler);
            }


            
//选择上传的图片
            private function choose():void
            
{
                var imageTypes:FileFilter=new FileFilter("Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.jpeg;*.png");
                var allTypes:Array=new Array(imageTypes);
                file.browse(allTypes);
//                file.browse();
            }


            
private function toUpload():void
            
{
                if (bitmapData == null)
                {
                    Alert.show("请您先选择要上传的图片");
                }

                else
                {
                    Alert.show("上传 " + file.name + " (共 " + Math.round(file.size) + " 字节)?", "确认上传", Alert.YES | Alert.NO, null, proceedWithUpload);
                }

            }


            
//监听文件上传状态
            private function onProgress(e:ProgressEvent):void
            
{
                lbProgress.text=" 已上传 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节";
                var proc:uint=e.bytesLoaded / e.bytesTotal * 100;
                bar.setProgress(proc, 100);
                bar.label="当前进度: " + " " + proc + "%";
                if (e.bytesLoaded == e.bytesTotal)
                {
                    CursorManager.removeBusyCursor();
                }

            }


            
//上传图片到服务器
            private function proceedWithUpload(e:CloseEvent):void
            
{
                if (e.detail == Alert.YES)
                {
                    //进度监听
                    file.addEventListener(ProgressEvent.PROGRESS, onProgress);
                    var request:URLRequest=new URLRequest("http://localhost:8080/FileUploaded");
                    //设置鼠标忙状态
                    CursorManager.setBusyCursor();
                    try
                    {
                        file.upload(request);
                        Alert.show("恭喜你,上传成功");
                    }

                    catch (error:Error)
                    {
                        Alert.show("上传失败");
                        trace("上传失败");
                    }


                }

            }


            
//上传完成调用
            private function completeHandle(event:Event):void
            
{
                Alert.show("恭喜你,上传成功");
            }


            
//载入本地图片
            private function fileReferenceCompleteHandler(e:Event):void
            
{
                byteArray=file.data;
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
                loader.loadBytes(byteArray);
            }


            
//图片载入完成显示在预览框中
            private function loaderCompleteHandler(e:Event):void
            
{
                var bitmap:Bitmap=Bitmap(loader.content);
                bitmapData=bitmap.bitmapData;
                img.source=bitmap;
            }


            
//选择文件动作监听
            private function fileReferenceSelectHandler(e:Event):void
            
{
                file.removeEventListener(ProgressEvent.PROGRESS, onProgress);
                file.load();
            }

        ]]
>
    
</mx:Script>

    
<mx:Canvas width="100%"
               height
="100%"
               x
="10"
               y
="170"
               fontSize
="15">
        
<mx:VBox width="100%"
                 horizontalAlign
="center">
            
<mx:Label id="lbProgress"
                      text
="上传"/>
            
<mx:ProgressBar id="bar"
                            labelPlacement
="bottom"
                            themeColor
="#F20D7A"
                            minimum
="0"
                            visible
="true"
                            maximum
="100"
                            label
="当前进度: 0%"
                            direction
="right"
                            mode
="manual"
                            width
="200"/>
            
<mx:Button label="上传文件"
                       click
="toUpload();"/>
        
</mx:VBox>
        
<mx:Panel width="469"
                  height
="392"
                  verticalGap
="0"
                  horizontalAlign
="center"
                  verticalAlign
="middle"
                  x
="408"
                  y
="129"
                  layout
="absolute">
            
<mx:Button label="选择文件"
                       click
="choose();"
                       x
="178"
                       y
="9"/>
            
<mx:Image id="img"
                      width
="400"
                      height
="300"
                      x
="36"
                      y
="44"/>

        
</mx:Panel>

    
</mx:Canvas>
</mx:Application>

java servlet端代码 

package upload;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * 
@author lqw
 
*/

public class FileUploaded extends HttpServlet {

    // 定义文件的上传路径
    private String uploadPath = "d:\\a\\";

    // 限制文件的上传大小
    private int maxPostSize = 100 * 1024 * 1024;

    public FileUploaded() {
        super();
    }


    public void destroy() {
        super.destroy();
    }


    protected void processRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        System.out.println("to upload picture !");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        // 保存文件到服务器中

        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(4096);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setSizeMax(maxPostSize);
        try {
            List fileItems = upload.parseRequest(request);
            Iterator iter = fileItems.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (!item.isFormField()) {
                    String name = item.getName();
                    System.out.println(name);
                    try {
                        item.write(new File(uploadPath + name));
                        // SaveFile s = new SaveFile();
                        
// s.saveFile(name);
                    }
 catch (Exception e) {
                        e.printStackTrace();
                    }

                }

            }

        }
 catch (FileUploadException e) {
            e.printStackTrace();
            System.out.println(e.getMessage() + "结束");
        }

    }


    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }


    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }


    public String getServletInfo() {
        return "Short description";
    }


}


web.xml 文件内容:
<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
    
     
<servlet>
        
<servlet-name>FileUploaded</servlet-name>
        
<servlet-class>upload.FileUploaded</servlet-class>
    
</servlet>

    
<servlet-mapping>
        
<servlet-name>FileUploaded</servlet-name>
        
<url-pattern>/FileUploaded</url-pattern>
    
</servlet-mapping>
    
    
<session-config>
        
<session-timeout>35</session-timeout>
    
</session-config>
    
<mime-mapping>
        
<extension>html</extension>
        
<mime-type>text/html</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>txt</extension>
        
<mime-type>text/plain</mime-type>
    
</mime-mapping>
    
</web-app>

FLEX端如果出现安全沙箱的问题:是由于在tomcat环境下没有声明应用程序能被外部访问. 

在程序的部署文件夹下添加crossdomain.xml文件.文件内容为: 
<?xml version="1.0"?> 

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 

<cross-domain-policy> 

<allow-access-from domain="*" secure="false"/> 
<allow-http-request-headers-from domain="*" headers="*" secure="false"/> 

</cross-domain-policy>

分享到:
评论

相关推荐

    Flex4.6+java+servlet上传图片例子+图片上传预览

    为了实现图片上传,Flex前端可能会使用FileReference类,它提供了读取本地文件并上传到服务器的能力。FileReference对象可以监听“uploadCompleteData”事件,当文件上传成功时触发。同时,通过Flash Player的...

    Flex+Java Servlet处理文件上传

    Flex+Java Servlet处理文件上传 关于上传文件

    Flex和Servlet结合上传文件

    在文件上传场景中,Flex可以设计一个包含文件选择按钮和进度条的界面,用户可以选择本地文件并触发上传操作。 接下来,当用户点击上传按钮后,Flex会通过HTTP POST请求将文件数据发送到服务器端的Servlet。在...

    Flex图片上传实例

    edtftpj.jar是一个Java FTP客户端库,用于将文件上传到FTP服务器。而commons-fileupload-1.2.1.jar是Apache Commons FileUpload库的一个版本,它提供了处理HTTP多部分表单数据的能力,这是上传文件时常见的格式。 ...

    flex图片上传带预览功能

    标题"flex图片上传带预览功能"表明我们将讨论如何在Flex应用中整合图片上传和预览这两个关键组件。通常,这个过程涉及到以下步骤: 1. **图片选择**:用户通过文件选择对话框选择图片。在Flex中,我们可以使用`...

    flex上传文件夹插件

    为了实现这一功能,插件可能采用了递归算法,遍历文件夹及其子文件夹,将所有文件信息存储在内存中,然后通过HTTP请求分批次或一次性上传到服务器。同时,插件可能还包含了进度条和取消操作等用户友好的特性,以便...

    FLEX 图片上传管理器

    预览功能的实现通常涉及到图片的即时加载技术和响应式设计,确保在不同设备和分辨率下都能顺畅预览。 4. 回收站机制:该管理器内置了回收站功能,用户误删的图片可以被移到回收站,而不是直接删除,这样为用户提供...

    Flex调用JavaServlet将组件快照导出成图片

    在本场景中,我们将讨论如何在Flex中捕获组件的快照,将其转换为ByteArray,并通过JavaServlet将其导出为图片。 首先,让我们深入了解Flex中的组件快照。在Flex中,我们可以使用BitmapData类来捕获组件的视觉表示,...

    Flex入门-Flex整合Servlet

    在Flex与Servlet的整合中,Servlet扮演了服务器端处理逻辑的角色。Servlet是Java Web开发中的一个重要组件,它可以接收和响应HTTP请求,处理业务逻辑,并返回响应数据。当Flex客户端发送请求时,这些请求通常会被...

    flex批量上传图片带预览功能

    "Flex批量上传图片带预览功能"这个话题聚焦于如何利用Adobe Flex技术实现一个功能强大的图片上传组件,该组件允许用户批量选择并预览图片,极大地提高了上传效率和用户的操作体验。 Flex是一种基于ActionScript 3.0...

    flex4+servlet批量上传

    本话题聚焦于使用Flex4客户端和Servlet服务器端实现批量上传的方案。Flex4是一种强大的富互联网应用(RIA)开发框架,而Servlet是Java Web开发中的一个核心组件,常用于处理HTTP请求。下面将详细探讨Flex4和Servlet...

    flex和java做的图片上传的小例子

    在标签中提到的"文件上传"和"图片上传",这两个概念在实际操作中并无太大区别,都是指通过网络将本地文件传输到服务器的过程。"小例子"表明这是一个教学或演示性质的项目,可能只包含基本功能,用于学习和理解图片...

    Flex+Java Servlet文件上传实例

    在这样的系统中,用户通过Flex界面选择本地文件并发起上传请求,这些请求随后由Java Servlet来接收和处理。Servlet作为服务器端的应用程序,负责接收文件数据,存储到服务器的指定位置,或者进行必要的业务逻辑处理...

    flex + servlet 多文件上传

    接下来,`Servlet`在服务器端接收到POST请求后,会处理上传的数据。在`Servlet`中,我们可以使用`Part`接口(自Java EE 7起)或者`InputStream`来接收上传的文件。这些数据通常封装在`HttpServletRequest`对象中,...

    flex+servlet简单实例

    在IT行业中,Flex和Servlet是两种非常重要的技术,它们分别用于构建富客户端应用程序和服务器端逻辑。本篇文章将深入探讨这两个技术如何结合实现一个简单的实例。 Flex是一种基于ActionScript和Flash Player的开源...

    flex嵌入jsp,与servlet通讯实例

    本实例主要讲解如何将Flex嵌入到JSP中,并通过Servlet进行通信,以实现前后端数据交互。 首先,我们要理解Flex与JSP、Servlet的交互流程。当用户在浏览器中访问Flex应用时,Flex应用会通过HTTP请求与服务器端的...

    Flex 上传文件控件 (带java服务端)

    它允许用户从本地系统选择文件,并将其上传到服务器。`FileReference`类提供了`browse()`方法让用户选择文件,`upload()`方法执行实际的上传操作。 2. **多文件与单文件上传**:通过配置`FileReference`的使用方式...

    flash上传文件,flex上传,无刷新上传,php上传,含源码

    在IT行业中,文件上传是网页应用中常见的功能之一,尤其在社交、云存储以及文件分享服务中至关重要。本文将深入探讨“flash上传文件,flex上传,无刷新上传,php上传”这一主题,并结合提供的源码文件,分析实现这些...

    Flex与Servlet之间数据的交互

    Flex与Servlet之间的数据交互是JavaWeb开发中的一个重要环节,它涉及到客户端富互联网应用程序(RIA)与服务器端数据处理的协同工作。Flex作为一个基于Adobe Flash Player的前端开发框架,主要用于创建具有丰富用户...

Global site tag (gtag.js) - Google Analytics