java中把图片放在那个位置,直接通过图片的地址来把图片保存到物理位置或数据库里面,这样的做法可以吗?该怎么处理...

该Java代码示例展示了如何处理HTTP请求中的文件上传,包括设置最大上传字节数限制,获取客户端IP和服务器名称,保存上传文件到指定目录,并检查文件是否为指定类型。如果文件过大或格式不正确,将返回错误信息。代码还涉及到文件读写、内容类型的检查以及文件保存路径的构建。

Java code

导入测试

int MAX_SIZE = 102400 * 102400;//定义上载文件的最大字节

String rootPath; // 创建根路径的保存变量

DataInputStream in = null; //声明文件读入类

FileOutputStream fileOut = null;

String remoteAddr = request.getRemoteAddr();//取得客户端的网络地址IP

//out.print(remoteAddr);

//out.print("
");

String serverName = request.getServerName(); //获得服务器的名字

out.print("你访问的网站是:"+serverName);

out.print("
");

//取得jsp文件相对与根地址的地址

out.print("jsp文件相对与根地址的地址:"+request.getServletPath());

out.print("
");

String realPath = request.getRealPath(serverName); //取得互联网程序的绝对地址

//out.println(realPath);

//out.print("
");

realPath = realPath.substring(0, realPath.lastIndexOf("\\"));

//out.print(realPath);

rootPath = realPath + "\\images\\temp\\"; //创建文件的保存目录upload

//传到服务器上的路径是:

String contentType = request.getContentType(); //取得客户端上传的数据类型

//out.println("

客户端上传的数据类型 = " + contentType + "

");

try {

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

{

//读入上传的数据

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

int formDataLength = request.getContentLength();

if (formDataLength > MAX_SIZE) {

out.print("

上传的文件字节数不可以超过" + MAX_SIZE + "

");

return;

}

//保存上传文件的数据

byte dataBytes[] = new byte[formDataLength];//放在一个字符数组里

int byteRead = 0;

int totalBytesRead = 0;

//上传的数据保存在byte数组

while (totalBytesRead < formDataLength) {

byteRead = in.read(dataBytes, totalBytesRead,

formDataLength);

totalBytesRead += byteRead;

}

//根据byte数组创建字符串

String file = new String(dataBytes);

//out.println(file);

//取得上传的数据的文件名

String saveFile = file

.substring(file.indexOf("filename=\"") + 10);

saveFile = saveFile.substring(0, saveFile.indexOf("\n"));

saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,

saveFile.indexOf("\""));

int lastIndex = contentType.lastIndexOf("=");

//取得数据的分隔字符串

String boundary = contentType.substring(lastIndex + 1,

contentType.length());

//创建保存路径的文件名

String fileName = rootPath + saveFile;

//out.print(fileName);

int pos;

pos = file.indexOf("filename=\"");

pos = file.indexOf("\n", pos) + 1;

pos = file.indexOf("\n", pos) + 1;

pos = file.indexOf("\n", pos) + 1;

int boundaryLocation = file.indexOf(boundary, pos) - 4;

//out.println(boundaryLocation);

//取得文件数据的开始的位置

int startPos = ((file.substring(0, pos)).getBytes()).length;

//out.println(startPos);

//取得文件数据的结束的位置

int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

//out.println(endPos);

//检查上载文件是否存在

File checkFile = new File(fileName);

if (saveFile.indexOf(".xls") < 0) {

out.print("

你上传的文件不是文本文件!

");

} else {

if (checkFile.exists()) {

out.println("

" + saveFile + "文件已经存在.

");

}

//检查上载文件的目录是否存在

File fileDir = new File(rootPath);

if (!fileDir.exists()) {

fileDir.mkdirs();

}

//创建文件的写出类

fileOut = new FileOutputStream(fileName);

//保存文件的数据

fileOut.write(dataBytes, startPos, (endPos - startPos));

fileOut.close();

out.println("

" + saveFile + "文件成功上载.

");

}

/**else{

String content = request.getContentType();

out.println

("

上传的数据类型不是是multipart/form-data

");

}*/

}

}catch(Exception e){e.printStackTrace();}

%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值