mct接收_Android实现文件上传功能(接收端用strust2)

首先是Android端的上传工具类:

/**

* 本类可以完成一个或多个文件的提交。 结构非常简单直接看代码就可以了。

*

* @author janken

*/

public class FileUpload {

/**

* 提交文件的地址.

*/

private String url = null;

/**

* 要提交的文件.

*/

private List files = null;

/**

* 构造方法。

*

* @param url

* 这个URL必须是get提交方式的URL,即这个URL不能带有任何参数信息。eg:'http://localhost:8080/FileUploadServer/file/upload.do'

*/

public FileUpload(String url) {

this.url = url;

files = new ArrayList();

}

/**

* 通过这个方法来添加要提交的文件。

*

*

* @param file

* 提交的文件,如果文件为空或者不存在或者不可读,则不提交这个文件,重复的文件只提交一次。

*/

public void addFile(File file) {

if (file == null || !file.exists() || !file.canRead()) {

return;

} else {

for (int i = 0; i < files.size(); i++) {

if (file.getPath().equalsIgnoreCase(files.get(i).getPath())) {

return;

}

}

files.add(file);

}

}

/**

* 提交的方法,该方法为每个文件创建一个请求连接进行提交。

*

* @throws Exception

*/

public void upload() throws Exception {

for (int i = 0; i < files.size(); i++) {

HttpClient httpClient = new DefaultHttpClient();

try {

FileEntity entity = new FileEntity(files.get(i),

"binary/octet-stream");

StringBuilder curUrl = new StringBuilder(url);

curUrl.append("?fileName=" + files.get(i).getName());

HttpPost httppost = new HttpPost(curUrl.toString());

httppost.setEntity(entity);

HttpResponse response = httpClient.execute(httppost);

int resultCode = response.getStatusLine().getStatusCode();

if (resultCode != HttpStatus.SC_OK) {

throw new Exception("上传文件" + files.get(i).getPath()

+ "失败.错误代码是:" + resultCode + ";原因描述是:"

+ response.getStatusLine().getReasonPhrase());

}

} finally {

if (httpClient != null

&& httpClient.getConnectionManager() != null) {

httpClient.getConnectionManager().shutdown();

}

}

}

}

}

下面是Struts2的代码,框架的搭建这里就不再细述了,只说下struts.xml中的action的配置:

method="uploadFile">

video/3gpp,video/x-msvideo,application/x-MS-bmp,image/jpeg,video/mp4,audio/x-wav

100000000

/upload

result

action的name属性是请求时.do前边的内容,本例中请求时要用upload.do;后边的do是可以在web中配置的的,有的人用.action等的字符串。

package的namespace属性是请求时在url中指定请求的路径使用,本例中用的是file,……/FileUploadServer/file/upload.do(即斜粗体的部分)。

action的代码如下:

public class UploadFileAction extends ActionSupport {

/**

*

*/

private static final long serialVersionUID = 1L;

private String result = null;

private String fileName = null;

private String savePath = null;

public String getResult() {

return result;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

public void setSavePath(String savePath) {

this.savePath = savePath;

}

public String uploadFile() throws Exception {

ActionContext context = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest) context

.get(ServletActionContext.HTTP_REQUEST);

CoyoteInputStream cis = (CoyoteInputStream) request.getInputStream();

String realPath = ServletActionContext.getServletContext().getRealPath(

savePath);

File dir = new File(realPath);

if (!dir.exists()) {

dir.mkdirs();

}

File file = new File(dir, fileName);

file.deleteOnExit();

file.createNewFile();

BufferedInputStream inBuff = null;

FileOutputStream output = null;

BufferedOutputStream outBuff = null;

try {

inBuff = new BufferedInputStream(cis);

output = new FileOutputStream(file);

outBuff = new BufferedOutputStream(output);

// 缓冲数组

byte[] b = new byte[1024 * 8];

int len;

while ((len = inBuff.read(b)) != -1) {

outBuff.write(b, 0, len);

}

outBuff.flush();

result = "OK";

return SUCCESS;

} finally {

if (inBuff != null) {

inBuff.close();

}

if (output != null) {

output.close();

}

if (outBuff != null) {

outBuff.close();

}

}

}

}

其中有3个属性,fileName是通过url传递过来的;result是用于请求的返回的告诉请求端处理是否完成;savePath是在action的xml中配置的一个参数,用来指定文件保存的文件夹

附录 :allowedTypes的类型对照如下:

application/octet-stream(无限制)

其他:

3gp

video/3gpp

aab

application/x-authoware-bin

aam

application/x-authoware-map

aas

application/x-authoware-seg

ai

application/postscript

aif

audio/x-aiff

aifc

audio/x-aiff

aiff

audio/x-aiff

als

audio/X-Alpha5

amc

application/x-mpeg

ani

application/octet-stream

asc

text/plain

asd

application/astound

asf

video/x-ms-asf

asn

application/astound

asp

application/x-asap

asx

video/x-ms-asf

au

audio/basic

avb

application/octet-stream

avi

video/x-msvideo

awb

audio/amr-wb

bcpio

application/x-bcpio

bin

application/octet-stream

bld

application/bld

bld2

application/bld2

bmp

application/x-MS-bmp

bpk

application/octet-stream

bz2

application/x-bzip2

cal

image/x-cals

ccn

application/x-cnc

cco

application/x-cocoa

cdf

application/x-netcdf

cgi

magnus-internal/cgi

chat

application/x-chat

class

application/octet-stream

clp

application/x-msclip

cmx

application/x-cmx

co

application/x-cult3d-object

cod

image/cis-cod

cpio

application/x-cpio

cpt

application/mac-compactpro

crd

application/x-mscardfile

csh

application/x-csh

csm

chemical/x-csml

csml

chemical/x-csml

css

text/css

cur

application/octet-stream

dcm

x-lml/x-evm

dcr

application/x-director

dcx

image/x-dcx

dhtml

text/html

dir

application/x-director

dll

application/octet-stream

dmg

application/octet-stream

dms

application/octet-stream

doc

application/msword

dot

application/x-dot

dvi

application/x-dvi

dwf

drawing/x-dwf

dwg

application/x-autocad

dxf

application/x-autocad

dxr

application/x-director

ebk

application/x-expandedbook

emb

chemical/x-embl-dl-nucleotide

embl

chemical/x-embl-dl-nucleotide

eps

application/postscript

eri

image/x-eri

es

audio/echospeech

esl

audio/echospeech

etc

application/x-earthtime

etx

text/x-setext

evm

x-lml/x-evm

evy

application/x-envoy

exe

application/octet-stream

fh4

image/x-freehand

fh5

image/x-freehand

fhc

image/x-freehand

fif

image/fif

fm

application/x-maker

fpx

image/x-fpx

fvi

video/isivideo

gau

chemical/x-gaussian-input

gca

application/x-gca-compressed

gdb

x-lml/x-gdb

gif

image/gif

gps

application/x-gps

gtar

application/x-gtar

gz

application/x-gzip

hdf

application/x-hdf

hdm

text/x-hdml

hdml

text/x-hdml

hlp

application/winhlp

hqx

application/mac-binhex40

htm

text/html

html

text/html

hts

text/html

ice

x-conference/x-cooltalk

ico

application/octet-stream

ief

image/ief

ifm

image/gif

ifs

image/ifs

imy

audio/melody

ins

application/x-NET-Install

ips

application/x-ipscript

ipx

application/x-ipix

it

audio/x-mod

itz

audio/x-mod

ivr

i-world/i-vrml

j2k

image/j2k

jad

text/vnd.sun.j2me.app-descriptor

jam

application/x-jam

jar

application/java-archive

jnlp

application/x-java-jnlp-file

jpe

image/jpeg

jpeg

image/jpeg

jpg

image/jpeg

jpz

image/jpeg

js

application/x-javascript

jwc

application/jwc

kjx

application/x-kjx

lak

x-lml/x-lak

latex

application/x-latex

lcc

application/fastman

lcl

application/x-digitalloca

lcr

application/x-digitalloca

lgh

application/lgh

lha

application/octet-stream

lml

x-lml/x-lml

lmlpack

x-lml/x-lmlpack

lsf

video/x-ms-asf

lsx

video/x-ms-asf

lzh

application/x-lzh

m13

application/x-msmediaview

m14

application/x-msmediaview

m15

audio/x-mod

m3u

audio/x-mpegurl

m3url

audio/x-mpegurl

ma1

audio/ma1

ma2

audio/ma2

ma3

audio/ma3

ma5

audio/ma5

man

application/x-troff-man

map

magnus-internal/imagemap

mbd

application/mbedlet

mct

application/x-mascot

mdb

application/x-msaccess

mdz

audio/x-mod

me

application/x-troff-me

mel

text/x-vmel

mi

application/x-mif

mid

audio/midi

midi

audio/midi

mif

application/x-mif

mil

image/x-cals

mio

audio/x-mio

mmf

application/x-skt-lbs

mng

video/x-mng

mny

application/x-msmoney

moc

application/x-mocha

mocha

application/x-mocha

mod

audio/x-mod

mof

application/x-yumekara

mol

chemical/x-mdl-molfile

mop

chemical/x-mopac-input

mov

video/quicktime

movie

video/x-sgi-movie

mp2

audio/x-mpeg

mp3

audio/x-mpeg

mp4

video/mp4

mpc

application/vnd.mpohun.certificate

mpe

video/mpeg

mpeg

video/mpeg

mpg

video/mpeg

mpg4

video/mp4

mpga

audio/mpeg

mpn

application/vnd.mophun.application

mpp

application/vnd.ms-project

mps

application/x-mapserver

mrl

text/x-mrml

mrm

application/x-mrm

ms

application/x-troff-ms

mts

application/metastream

mtx

application/metastream

mtz

application/metastream

mzv

application/metastream

nar

application/zip

nbmp

image/nbmp

nc

application/x-netcdf

ndb

x-lml/x-ndb

ndwn

application/ndwn

nif

application/x-nif

nmz

application/x-scream

nokia-op-logo

image/vnd.nok-oplogo-color

npx

application/x-netfpx

nsnd

audio/nsnd

nva

application/x-neva1

oda

application/oda

oom

application/x-AtlasMate-Plugin

pac

audio/x-pac

pae

audio/x-epac

pan

application/x-pan

pbm

image/x-portable-bitmap

pcx

image/x-pcx

pda

image/x-pda

pdb

chemical/x-pdb

pdf

application/pdf

pfr

application/font-tdpfr

pgm

image/x-portable-graymap

pict

image/x-pict

pm

application/x-perl

pmd

application/x-pmd

png

image/png

pnm

image/x-portable-anymap

pnz

image/png

pot

application/vnd.ms-powerpoint

ppm

image/x-portable-pixmap

pps

application/vnd.ms-powerpoint

ppt

application/vnd.ms-powerpoint

pqf

application/x-cprplayer

pqi

application/cprplayer

prc

application/x-prc

proxy

application/x-ns-proxy-autoconfig

ps

application/postscript

ptlk

application/listenup

pub

application/x-mspublisher

pvx

video/x-pv-pvx

qcp

audio/vnd.qcelp

qt

video/quicktime

qti

image/x-quicktime

qtif

image/x-quicktime

r3t

text/vnd.rn-realtext3d

ra

audio/x-pn-realaudio

ram

audio/x-pn-realaudio

rar

application/x-rar-compressed

ras

image/x-cmu-raster

rdf

application/rdf+xml

rf

image/vnd.rn-realflash

rgb

image/x-rgb

rlf

application/x-richlink

rm

audio/x-pn-realaudio

rmf

audio/x-rmf

rmm

audio/x-pn-realaudio

rmvb

audio/x-pn-realaudio

rnx

application/vnd.rn-realplayer

roff

application/x-troff

rp

image/vnd.rn-realpix

rpm

audio/x-pn-realaudio-plugin

rt

text/vnd.rn-realtext

rte

x-lml/x-gps

rtf

application/rtf

rtg

application/metastream

rtx

text/richtext

rv

video/vnd.rn-realvideo

rwc

application/x-rogerwilco

s3m

audio/x-mod

s3z

audio/x-mod

sca

application/x-supercard

scd

application/x-msschedule

sdf

application/e-score

sea

application/x-stuffit

sgm

text/x-sgml

sgml

text/x-sgml

sh

application/x-sh

shar

application/x-shar

shtml

magnus-internal/parsed-html

shw

application/presentations

si6

image/si6

si7

image/vnd.stiwap.sis

si9

image/vnd.lgtwap.sis

sis

application/vnd.symbian.install

sit

application/x-stuffit

skd

application/x-Koan

skm

application/x-Koan

skp

application/x-Koan

skt

application/x-Koan

slc

application/x-salsa

smd

audio/x-smd

smi

application/smil

smil

application/smil

smp

application/studiom

smz

audio/x-smd

snd

audio/basic

spc

text/x-speech

spl

application/futuresplash

spr

application/x-sprite

sprite

application/x-sprite

spt

application/x-spt

src

application/x-wais-source

stk

application/hyperstudio

stm

audio/x-mod

sv4cpio

application/x-sv4cpio

sv4crc

application/x-sv4crc

svf

image/vnd

svg

image/svg-xml

svh

image/svh

svr

x-world/x-svr

swf

application/x-shockwave-flash

swfl

application/x-shockwave-flash

t

application/x-troff

tad

application/octet-stream

talk

text/x-speech

tar

application/x-tar

taz

application/x-tar

tbp

application/x-timbuktu

tbt

application/x-timbuktu

tcl

application/x-tcl

tex

application/x-tex

texi

application/x-texinfo

texinfo

application/x-texinfo

tgz

application/x-tar

thm

application/vnd.eri.thm

tif

image/tiff

tiff

image/tiff

tki

application/x-tkined

tkined

application/x-tkined

toc

application/toc

toy

image/toy

tr

application/x-troff

trk

x-lml/x-gps

trm

application/x-msterminal

tsi

audio/tsplayer

tsp

application/dsptype

tsv

text/tab-separated-values

tsv

text/tab-separated-values

ttf

application/octet-stream

ttz

application/t-time

txt

text/plain

ult

audio/x-mod

ustar

application/x-ustar

uu

application/x-uuencode

uue

application/x-uuencode

vcd

application/x-cdlink

vcf

text/x-vcard

vdo

video/vdo

vib

audio/vib

viv

video/vivo

vivo

video/vivo

vmd

application/vocaltec-media-desc

vmf

application/vocaltec-media-file

vmi

application/x-dreamcast-vms-info

vms

application/x-dreamcast-vms

vox

audio/voxware

vqe

audio/x-twinvq-plugin

vqf

audio/x-twinvq

vql

audio/x-twinvq

vre

x-world/x-vream

vrml

x-world/x-vrml

vrt

x-world/x-vrt

vrw

x-world/x-vream

vts

workbook/formulaone

wav

audio/x-wav

wax

audio/x-ms-wax

wbmp

image/vnd.wap.wbmp

web

application/vnd.xara

wi

image/wavelet

wis

application/x-InstallShield

wm

video/x-ms-wm

wma

audio/x-ms-wma

wmd

application/x-ms-wmd

wmf

application/x-msmetafile

wml

text/vnd.wap.wml

wmlc

application/vnd.wap.wmlc

wmls

text/vnd.wap.wmlscript

wmlsc

application/vnd.wap.wmlscriptc

wmlscript

text/vnd.wap.wmlscript

wmv

audio/x-ms-wmv

wmx

video/x-ms-wmx

wmz

application/x-ms-wmz

wpng

image/x-up-wpng

wpt

x-lml/x-gps

wri

application/x-mswrite

wrl

x-world/x-vrml

wrz

x-world/x-vrml

ws

text/vnd.wap.wmlscript

wsc

application/vnd.wap.wmlscriptc

wv

video/wavelet

wvx

video/x-ms-wvx

wxl

application/x-wxl

x-gzip

application/x-gzip

xar

application/vnd.xara

xbm

image/x-xbitmap

xdm

application/x-xdma

xdma

application/x-xdma

xdw

application/vnd.fujixerox.docuworks

xht

application/xhtml+xml

xhtm

application/xhtml+xml

xhtml

application/xhtml+xml

xla

application/vnd.ms-excel

xlc

application/vnd.ms-excel

xll

application/x-excel

xlm

application/vnd.ms-excel

xls

application/vnd.ms-excel

xlt

application/vnd.ms-excel

xlw

application/vnd.ms-excel

xm

audio/x-mod

xml

text/xml

xmz

audio/x-mod

xpi

application/x-xpinstall

xpm

image/x-xpixmap

xsit

text/xml

xsl

text/xml

xul

text/xul

xwd

image/x-xwindowdump

xyz

chemical/x-pdb

yz1

application/x-yz1

z

application/x-compress

zac

application/x-zaurus-zac

zip

application/zip

dotx

application/vnd.openxmlformats-officedocument.wordprocessingml.template

docx

application/vnd.openxmlformats-officedocument.wordprocessingml.document

xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值