jsp ajax read,java - JSP AJAX file uploading - Stack Overflow

I tried to upload a file and display content of the file back to the browser with ajax and jsp. However, it doesn't seem to work very well for me.

Apparently, in JSP page Upload.jsp, when I try to getContentType() from request, request.getcontentType() == null .

Does anyone have experience with this? Thank you much.

Form

This is the Javascript function upload(ifile)

function upload(ifile){

if (window.XMLHttpRequest){

//IE7 + and other browsers

xmlhttp = new XMLHttpRequest();

}else{

//IE 6, 5

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

if(xmlhttp == null){

alert("File Uploading is not available because your browser does not support AJAX");

return;

}

//Function to process response form upload.jsp

xmlhttp.onreadystatechange = function(){

if(xmlhttp.readyState == 4 && xmlhttp.status == 200){

var response = xmlhttp.responseText;

alert(response);

}

}

xmlhttp.open("POST", "Upload.jsp?file="+ifile, true);

xmlhttp.send(null);

}

And this is the JSP page Upload.jsp

response.setContentType("text/html");

response.setHeader("Cache-control", "no-cache");

String contentType = request.getContentType();

if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {

DataInputStream in = new DataInputStream(request.getInputStream());

//get length of Content type data

int formDataLength = request.getContentLength();

byte dataBytes[] = new byte[formDataLength];

int byteRead = 0;

int totalBytesRead = 0;

//convert the uploaded file into byte code

while (totalBytesRead < formDataLength) {

byteRead = in.read(dataBytes, totalBytesRead,formDataLength);

totalBytesRead += byteRead;

}

//decode byte array using default charset

String file = new String(dataBytes);

//Using StringTokenizer to extract genes list

StringTokenizer st = new StringTokenizer(file, " ");

int numtoken = st.countTokens();

for(int i = 0; i < numtoken-1; i++){

st.nextToken();

}

String a = st.nextToken();

st = new StringTokenizer(a, " \n");

numtoken = st.countTokens();

String postlink = "";

st.nextToken();

st.nextToken();

for(int i = 1; i < numtoken-3; i++){

String temp = st.nextToken();

char[] c = temp.toCharArray();

temp = new String(c, 0, c.length-1);

if(!" ".equalsIgnoreCase(temp)){

postlink = postlink + temp + ",";

}

}

String temp = st.nextToken();

postlink = postlink + temp;

out.println(postlink);

out.flush();

out.close();

}else if (contentType == null){

out.println("Not a valid file");

out.flush();

}

%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值