java 上传方法_Java实现文件上传的方法

本文实例为大家分享了java实现文件上传的具体代码,具体内容如下

1、java代码:

package com.github.reston.servlet;

import java.io.file;

import java.io.fileoutputstream;

import java.io.ioexception;

import java.io.printwriter;

import java.util.iterator;

import java.util.list;

import javax.servlet.servletconfig;

import javax.servlet.servletexception;

import javax.servlet.annotation.webservlet;

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.fileitemfactory;

import org.apache.commons.fileupload.disk.diskfileitemfactory;

import org.apache.commons.fileupload.servlet.servletfileupload;

import org.apache.commons.io.ioutils;

@webservlet("/ajaxupload")

public class ajaxupload extends httpservlet{

@override

public void init(servletconfig config) throws servletexception{

// todo auto-generated method stub

super.init(config);

}

@override

protected void service(httpservletrequest request,httpservletresponse response) throws servletexception,ioexception{

response.setcontenttype("text/html");

request.setcharacterencoding("utf-8");

boolean ismultipart=servletfileupload.ismultipartcontent(request);

string basepath=getservletcontext().getrealpath("/upload");

file basedirectory=new file(basepath);

string filename="";

long start=0;

if(!basedirectory.isdirectory()) basedirectory.mkdirs();

if(ismultipart){

try{

fileitemfactory factory=new diskfileitemfactory();

servletfileupload upload=new servletfileupload(factory);

@suppresswarnings("unchecked") list fileitems=upload.parserequest(request);

for(fileitem i:fileitems){

if(i.isformfield()){

string name=i.getfieldname();

string value=i.getstring();

if(name.equals("start"))start=long.parselong(i.getstring());

}

}

for(fileitem item:fileitems){

if(item.isformfield()) continue;

filename=item.getfieldname();

if(mkdir(basepath)){

file fileonserver=createfile(basepath,filename);

if(fileonserver.length()==0){

fileoutputstream fos=new fileoutputstream(fileonserver,true);

ioutils.copy(item.getinputstream(),fos);

}

if(start>0){

fileoutputstream fos=new fileoutputstream(fileonserver,true);

ioutils.copy(item.getinputstream(),fos);

}

printwriter pw=response.getwriter();

pw.write("{\"length\":\""+fileonserver.length()+"\"}");

pw.flush();

}

}

}catch(exception e){

}

}

}

private file createfile(string path,string name) throws ioexception{

file tmp=new file(path,name);

if(!tmp.exists()){

tmp.createnewfile();

}

return tmp;

}

private boolean mkdir(string path){

boolean result=true;

file tmp=new file(path);

if(!tmp.isdirectory()){

result=tmp.mkdirs();

}

return result;

}

}

2、java代码:

var ajaxupload = function(e) {

/**

* e url method data success error

*/

var xmlhttprequest;

if (window.xmlhttprequest) {

xmlhttprequest = new xmlhttprequest();

if (xmlhttprequest.overridemimetype) {

xmlhttprequest.overridemimetype("text/xml");

}

} else if (window.activexobject) {

var activename = [ "msxml2.xmlhttp", "microsoft.xmlhttp" ];

for (var i = 0; i < activename.length; i++) {

try {

xmlhttprequest = new activexobject(activename[i]);

break;

} catch (e) {

return;

}

}

}

if (xmlhttprequest == undefined || xmlhttprequest == null) {

alert("xmlhttprequest对象创建失败!!");

return;

} else {

this.xmlhttp = xmlhttprequest;

}

var file = document.getelementbyid(e.id);

if (this.xmlhttp != undefined && this.xmlhttp != null) {

e.method = e.method.touppercase();

if (e.method != "get" && e.method != "post") {

alert("http的请求方法必须为get或post!!!");

return;

}

if (e.url == null || e.url == undefined) {

e.alert("http的请求地址必须设置!");

return;

}

}

this.xmlhttp.onreadystatechange = function() {

if (this.readystate == 4) {

if (this.status == 200) {

var responsetext = this.responsetext;

var responsexml = this.reponsexml;

if (e.success == undefined || e.success == null) {

alert("没有设置处理数据正确返回的方法");

alert("返回的数据:" + responsetext);

} else {

e.success(responsetext, responsexml);

}

} else {

if (e.error == undefined || e.error == null) {

alert("没有设置处理数据返回失败的处理方法!");

alert("http的响应码:" + this.status + ",响应码的文本信息:" + this.statustext);

} else {

e.error(this.status, this.statustext);

}

}

}

}

// var formhtm="

";

var filename = getfilename(e.id);

this.xmlhttp.open(e.method, e.url, true);

var data = new formdata(document.getelementbyid("output"));

data.append("name", filename);

data.append("start", e.data.start);

data.append(filename, document.getelementbyid(e.id).files[0].slice(e.data.start, getfilesize(e.id)));

this.xmlhttp.send(data);

}

function getfilename(id) {

var path = document.getelementbyid(id).value

var pos1 = path.lastindexof('/');

var pos2 = path.lastindexof('\\');

var pos = math.max(pos1, pos2);

return path.substring(pos + 1);

}

function getfilesize(id) {

return document.getelementbyid(id).files[0].size;

}

3、html代码:

请选择要上传的文件(小于1g)

function test(){

ajaxupload({

id : "upload",

url : "/pcc/reston/ajaxupload",

method : "post",

data : {start:0},

success : function(e) {

var l=json.parse(e).length;

ajaxupload({

id : "upload",

url : "/pcc/reston/ajaxupload",

method : "post",

data : {start:l},

success : function(e) {

},

error : function(e) {

console.log(e);

}

});

},

error : function(e) {

console.log(e);

}

});

}

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值