Java实现文件上传的方法

网友投稿 250 2023-07-16


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;

impohttp://rt 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 ihttp://tem: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.shttp://tatus, 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)

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
下一篇:Bootstrap模块dropdown实现下拉框响应
相关文章

 发表评论

暂时没有评论,来抢沙发吧~