Flex上传大文件最佳解决方案是?????

gj_wrxz 2010-05-20 01:50:02
Flex上传大文件最佳解决方案是????? 500M以上

我程序用的是flex +java有 有什么建议的
...全文
793 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
woiff 2011-09-16
  • 打赏
  • 举报
回复
GOOD
yingxuetan 2010-09-22
  • 打赏
  • 举报
回复
最近也遇到这个问题了。。。
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
在Appliction里面<mx:Button click="uplode(event)" />




//点击上传
private function uplode(e:Event):void{
var win:Mp3Upload =Mp3Upload(PopUpManager.createPopUp(this,Mp3Upload,true));
PopUpManager.centerPopUp(win);
}
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
可能是sdk版本不一样,把样式什么的都去掉
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
flex 写的很简单的啊,你直接拷贝过去用的?
gj_wrxz 2010-05-20
  • 打赏
  • 举报
回复
Error: No class registered for interface 'mx.styles::IStyleManager2'.
at mx.core::Singleton$/getInstance()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\Singleton.as:111]
at mx.styles::StyleManager$/get impl()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\styles\StyleManager.as:78]
at mx.styles::StyleManager$/http://www.adobe.com/2006/flex/mx/internal::initProtoChainRoots()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\styles\StyleManager.as:144]
at Mp3Load/http://www.adobe.com/2006/flex/mx/internal::_Mp3Load_StylesInit()[D:\workspace\flextest\flex_src\Mp3Load.mxml:0]
at Mp3Load()[D:\workspace\flextest\flex_src\Mp3Load.mxml:0]
是不是有什么文件没发给出来啊 打开报错
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
上传速度我想应该体现在后台java的处理上,可以再java上着手寻求最佳方案,flex上传就那么两种方式
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
FileUploadMp3是一个servlet 写的有点乱 见笑
package com.zznode.gixpert.groupnorms.action;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
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;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
*
* @author qixiaoran 转载于网络 http://blog.csdn.net/meteorlWJ/archive/2008/06/01/2450234.aspx
*/
public class FileUploadServlet extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/


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

public FileUploadServlet() {
super();
}

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

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//得到传递过来的文件名
String filename = charChange(request.getParameter("fileName"));
String uname = System.currentTimeMillis()+".mp3"; //取一个随机数作为上传文件的文件名避开中文文件名乱码的可能性
//得到当前tomcat的路径
String tomcaturi = request.getSession().getServletContext().getRealPath("");
// 定义文件的上传路径
String uploadPath = "";
if(System.getProperty( "os.name").indexOf("Windows") != -1){
uploadPath = tomcaturi+"\\resources\\mv\\"+uname;
}else{
uploadPath = tomcaturi+"/resources/mv/"+uname;
}


//保存文件到服务器中
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()) {
try {
item.write(new File(uploadPath));
// item.write(new File(tomcaturi+"\\gixpertflex-sx\\resources\\mv\\"+filename));

if(System.getProperty( "os.name").indexOf("Windows") != -1){
modiXMLFile(tomcaturi+"\\flexconfig\\groupnorms\\playlist.xml", tomcaturi+"\\flexconfig\\groupnorms\\playlist.xml",
filename, "resources\\mv\\"+uname);
}else{
modiXMLFile(tomcaturi+"/flexconfig/groupnorms/playlist.xml", tomcaturi+"/flexconfig/groupnorms/playlist.xml",
filename, "resources/mv/"+uname);
}



} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
/**
* 字符串内码转换 GB2312 to iso8859-1
*/
public String charChange(String ori) {
if (ori == null || ori.length() == 0) {
return "";
}
String newstr = "";
try {
newstr = new String(ori.getBytes("ISO-8859-1"));
return newstr;
} catch (Exception e) {
e.printStackTrace();
return newstr;
}
}
/**

* 修改XML文件中内容,并另存为一个新文件

* @param filename 修改对象文件

* @param newfilename 修改后另存为该文件

* @param title 声音文件描述

* @param mp3url 上传的文件存放的地址

* @return 返回操作结果, 0表失败, 1表成功

*/


private int modiXMLFile(String filename,String newfilename,String title,String mp3url){

int returnValue = 0;

try{

SAXReader saxReader = new SAXReader();

FileInputStream in = new FileInputStream(new File(filename));

Document document = saxReader.read(createReader(in,"utf-8"));

/** 修改内容之一: 如果sound节点中sound参数的内容为true,则修改成false */

/** 先用xpath查找对象,将以前播放的声音文件标示置为false */

List list = document.selectNodes("/playlist/sound" );

Iterator iter = list.iterator();

while(iter.hasNext()){
Element ftpElement = (Element) iter.next();
if (ftpElement.attribute("isuse").getValue().equals("true")) {
ftpElement.attribute("isuse").setValue("false");
}
}
/** 将新增的声音文件增加到xml描述文件 **/
list = document.selectNodes("/playlist");

iter = list.iterator();

if(iter.hasNext()){

Element ownerElement = (Element)iter.next();

Element soundElement = ownerElement.addElement("sound");

soundElement.addAttribute("title",title);

mp3url = mp3url.replace("\\", "/");
soundElement.addAttribute("source",mp3url);

soundElement.addAttribute("isuse","true");

}

/** 将document中的内容写入文件中,另存为的文件 */
XMLWriter output = null;

/** 格式化输出,类型IE浏览一样 */

OutputFormat format = OutputFormat.createPrettyPrint();

/** 指定XML字符集编码 */

format.setEncoding("utf-8");

output = new XMLWriter(new OutputStreamWriter(new java.io.FileOutputStream(filename),"UTF-8"),format);

output.write(document);

output.close();



output = new XMLWriter(new OutputStreamWriter(new java.io.FileOutputStream(newfilename),"UTF-8"),format);

output.write(document);

output.close();

/** 执行成功,需返回1 */

returnValue = 1;

}catch(Exception e){
e.printStackTrace();

}
return returnValue;
}
protected Reader createReader(InputStream inputStream, String encoding) {
try{
return new BufferedReader(
new InputStreamReader(inputStream,encoding)
);
}
catch(Exception uee){
uee.printStackTrace();

}

return null;
}


}

yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
就是通过flex加Struts或者servlet实现的啊
Mp3Load.mxml:



<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12"
borderColor="#000000" headerHeight="25" color="#ffffff" creationComplete="init();"
showCloseButton="true" close="closewindow()"
title="告警声音文件上传" backgroundAlpha="0.50" backgroundColor="#000000"
verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import flash.net.FileReference;
import mx.controls.Alert;
import mx.events.CloseEvent;
import flash.events.*;

private var file: FileReference;

private function init(): void{
Security.allowDomain("*");
file = new FileReference();
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
file.addEventListener(Event.SELECT, onSelect);
file.addEventListener(Event.COMPLETE, completeHandle);
}
private function closewindow():void{
PopUpManager.removePopUp(this);
}
private function completeHandle(event:Event):void{
Alert.show("上传成功!");
PopUpManager.removePopUp(this);
}

private function upload(): void{
try{
var imageTypes:FileFilter = new FileFilter("Mp3 (*.mp3)", "*.mp3");
var allTypes:Array = new Array(imageTypes);
file.browse(allTypes);
// file.browse();
}catch(error:Error){
Alert.show("一次只能打开一个文件浏览!");
return;
}
}
private function onSelect(e: Event): void{
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 + "%";
}

private function proceedWithUpload(e: CloseEvent): void{
if (e.detail == Alert.YES){
var request: URLRequest = new URLRequest("FileUploadMp3?fileName="+file.name);
try {
file.upload(request);
} catch (error:Error) {
trace("上传失败");
}
}
}
]]>
</mx:Script>
<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="upload();"/>
</mx:VBox>

</mx:Canvas>
</mx:TitleWindow>
gj_wrxz 2010-05-20
  • 打赏
  • 举报
回复
上传速度怎么样啊 500M一般要多长时间,能说的详细点吗 或者能共享个demo吗
gj_wrxz 2010-05-20
  • 打赏
  • 举报
回复
楼上的是怎么实现的
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复
最佳解决方案?
yc2503yc 2010-05-20
  • 打赏
  • 举报
回复


81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧