加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex 导出文件&导出图片&文件下载

发布时间:2020-12-15 03:59:20 所属栏目:百科 来源:网络整理
导读:flex 端: FileExporter.as importflash.display.BitmapData; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.navigateToURL; import flash.utils.ByteArray; import mx.core.UICom

flex端:

FileExporter.as

importflash.display.BitmapData;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import flash.net.navigateToURL;
import flash.utils.ByteArray;

import mx.core.UIComponent;
import mx.graphics.codec.JPEGEncoder;
import mx.managers.BrowserManager;
import mx.managers.IBrowserManager;
import mx.utils.URLUtil;

public class FileExporter
{
public function FileExporter()
{
}
// 1flex 根据文件内容和文件名称导出为文件
public functionexportFile(content:String,fileName:String):void
{
var headers:Array=new Array(newURLRequestHeader("fileName",encodeURI(fileName)));
this.post("/action/fileExportAction.action",ByteArrayUtil.getByteArray(content),headers);
}

// 2flex 根据UIComponent和文件名称导出为图片
public functionexportDesignImage(ui:UIComponent,fileName:String):void
{
var bitmapData : BitmapData = newBitmapData(ui.width,ui.height);
bitmapData.draw(ui); ? ?
var jpgByteArray : ByteArray = newJPEGEncoder(90).encode(bitmapData);
var headers:Array=new Array(newURLRequestHeader("fileName",jpgByteArray,headers);
}
//3flex 从指定文件位置下载文件
public functionexportExcel(filePath:String,encodeURI(fileName)));
var url:String=getContext()+"/action/fileDownloadAction.action"+"?filePath="+encodeURIComponent(filePath);
var request:URLRequest= new URLRequest(url);
if(headers!=null)
{
request.requestHeaders=headers;
}
request.data=new ByteArray();;
request.method=URLRequestMethod.POST;
request.contentType="application/octet-stream";
navigateToURL(request,"_self");
}

private functionpost(urlSuffix:String,result:ByteArray,headers:Array):void
{
var url:String=getContext()+urlSuffix;
var request:URLRequest= new URLRequest(url);
if(headers!=null)
{
request.requestHeaders=headers;
}
request.method=URLRequestMethod.POST;
request.data=result;
request.contentType="application/octet-stream";
navigateToURL(request,"_self");
}


/**获取浏览器根路径*/
private function getContext():String
{
var bm:IBrowserManager =BrowserManager.getInstance();
bm.init();
varurlPrefix:String="http://"+URLUtil.getServerNameWithPort(bm.url)+"/";
var suffix:String=bm.url.replace(urlPrefix,"");
varcontext:String=suffix.substring(0,suffix.indexOf("/"));
return urlPrefix+context;
}
}

?

ByteArrayUtil.as

importflash.utils.ByteArray;

public class ByteArrayUtil
{
public function ByteArrayUtil()
{
}

/**
?*
将字符串转换为ByteArray
?*/

public static functiongetByteArray(str:String):ByteArray
{
var b:ByteArray=new ByteArray();
b.writeMultiByte(str,"UTF");//utf-32,unicode-32
return b;
}
/**
*
ByteArray转换为字符串
*/

public static functiongetString(source:ByteArray):String
{
if(source==null)
{
throw new Error("要转换为字符串的数据源不能为空");
}
returnsource.readMultiByte(source.length,"utf");
}?
}

java端:

FileExportAction.java

package action;


import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;


import action.BaseAction;


public class FileExportAction extends BaseAction
{
???????? privatestatic final long serialVersionUID = 2462867204321788656L;
???????? privateString downFileName;
???????? privateInputStream inputStream;
???????? privateFile upload;
???????? privateLong catalogId;
???????? privateString uploadFileName;

???????? publicString exportFile() throws IOException
???????? {
?????????????????? try
?????????????????? {
??????????????????????????? downFileName=this.getRequest().getHeader("fileName");
??????????????????????????? inputStream= new BufferedInputStream(getRequest().getInputStream());
?????????????????? }
?????????????????? catch(Exceptione)
?????????????????? {
??????????????????????????? downFileName="导出文件出错.txt";
??????????????????????????? inputStream=newByteArrayInputStream((""+e.getMessage()).getBytes());
?????????????????? }
?????????????????? returnSUCCESS;
???????? }
????????
???????? publicInputStream getInputStream()
???????? {
?????????????????? returninputStream;
???????? }

???????? publicvoid setInputStream(InputStream inputStream)
???????? {
?????????????????? this.inputStream= inputStream;
???????? }
???????? publicString getDownFileName()
???????? {
?????????????????? returndownFileName;
???????? }

???????? publicvoid setDownFileName(String downFileName)
???????? {
?????????????????? this.downFileName= downFileName;
???????? }

???????? publicFile getUpload() {
?????????????????? returnupload;
???????? }

???????? publicvoid setUpload(File upload) {
?????????????????? this.upload= upload;
???????? }

???????? publicLong getCatalogId() {
?????????????????? returncatalogId;
???????? }

???????? publicvoid setCatalogId(Long catalogId) {
?????????????????? this.catalogId= catalogId;
???????? }

???????? publicString getUploadFileName() {
?????????????????? returnuploadFileName;
???????? }

???????? publicvoid setUploadFileName(String uploadFileName) {
?????????????????? this.uploadFileName= uploadFileName;
???????? }
}

FileDownloadAction.java

package action;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import action.BaseAction;

public class FileDownloadAction extends BaseAction{


???????? privatestatic final long serialVersionUID = 2137442469062749248L;
???????? privateInputStream inputStream;
???????? privateString downFileName;
???????? privateString filePath;
???????? publicString exportFile() throws IOException
???????? {
?????????????????? try
?????????????????? {
??????????????????????????? downFileName= this.getRequest().getHeader("fileName");
??????????????????????????? filePath= newString(this.getRequest().getParameter("filePath").getBytes("ISO-8859-1"),"UTF-8");?
??????????????????????????? inputStream= new FileInputStream(filePath);
?????????????????? }
?????????????????? catch(Exceptione)
?????????????????? {
??????????????????????????? downFileName="Error.txt";
??????????????????????????? inputStream=newByteArrayInputStream((""+e.getMessage()).getBytes());
?????????????????? }
?????????????????? returnSUCCESS;
???????? }

???????? publicvoid setInputStream(InputStream inputStream) {
?????????????????? this.inputStream= inputStream;
???????? }
???????? publicInputStream getInputStream() {
?????????????????? returninputStream;
???????? }

???????? publicvoid setDownFileName(String downFileName) {
?????????????????? this.downFileName= downFileName;
???????? }

???????? publicString getDownFileName() {
?????????????????? returndownFileName;
???????? }

???????? publicString getFilePath() {
?????????????????? returnfilePath;
???????? }

???????? publicvoid setFilePath(String filePath) {
?????????????????? this.filePath= filePath;
???????? }
????????
}

struts.xml配置

???????? <packagename="action" namespace="/action"extends="exceptionInterceptor">
?????????? <actionname="fileExportAction" method="exportFile"
???????????????? class="action.FileExportAction">
???????????????? <resultname="success" type="stream">
????????????????????? <paramname="contentType">application/octet-stream</param>
????????????????????? <paramname="inputName">inputStream</param>
????????????????????? <!--
??????????????????????????? 使用经过转码的文件名作为下载文件名,downloadFileName属性 对应action类中的方法
??????????????????????????? getDownloadFileName()
????????????????????? -->
????????????????????? <paramname="contentDisposition">attachment;filename="${downFileName}"</param>
????????????????????? <paramname="bufferSize">4096</param>
???????????????? </result>
?????????? </action>
?????????? <actionname="fileDownloadAction" method="exportFile"
???????????????? class="action.FileDownloadAction">
???????????????? <resultname="success" type="stream">
????????????????????? <paramname="contentType">application/octet-stream</param>
????????????????????? <paramname="inputName">inputStream</param>
????????????????????? <paramname="contentDisposition">attachment;filename="${downFileName}"</param>
????????????????????? <paramname="bufferSize">4096</param>
???????????????? </result>
?????????? </action>
????? </package>

欢迎纠错!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读