test1.htm:
<form action="test1.jsp" method="post">
<input type="file" name="image">
<input type="submit" value="上传">
</form>
test1.jsp
<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.io.*"%><%
String img = request.getParameter("image");
//这样接收值正确吗?
File file = new File(img);
//File的转换呢?..
FileInputStream in = null;
FileOutputStream out = null;
int b = 0;
try {
in = new FileInputStream(file);
out = new FileOutputStream("image\\123456789.jpg");
while((b = in.read())!= -1) {
out.write(b);
}
} catch (ClassNotFoundException e) {
System.out.println("找不到指定文件!!");
System.exit(-1);
} catch (IOException e) {
System.out.println("文件复制错误!!!");
System.exit(-1);
} finally {
in.close();
out.close();
}
System.out.println("文件复制成功!!!!!");
%>
<h1>上传成功!!!!!!!!!!!!!!</h1>
上传无法获得成功!~~!~ 请教该怎么更改!~~~~(不用组件!!!)
这个用法是接收连接中字符串值的,不能接收文件。而且本身就应该把文件提到服务器端的某个servlet或者action,不能直接提交给jsp。
拿什么来接收文件! 难道不是request吗?.
<FORM METHOD="POST" ACTION="doAddImage.jsp" ENCTYPE="multipart/form-data" height=20>
表示是以数据流的形式上传的数据。然后在test1.jsp中,以流读取的方式来取得数据流中的数据,再以数据流的形式写入本地文件中。
<%@ page pageEncoding="gbk" contentType="text/html;charset=gbk" %>
<html>
<head>
<title>图片上传</title>
</head>
<body>
<form name="uploadForm" action="upload.jsp" method="post" enctype="multipart/form-data">
<input name="file" type="file"/>
<input type="submit"/>
</form>
</body>
</html>upload.jsp:
<%@page pageEncoding="gbk"
import="org.apache.commons.fileupload.FileUpload,org.apache.commons.fileupload.servlet.ServletFileUpload,org.apache.commons.fileupload.disk.DiskFileItemFactory,java.io.File,java.util.List,java.util.Iterator,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.DiskFileUpload"%>
<%
//检查输入请求是否为multipart表单数据。
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
//为该请求创建一个DiskFileUpload对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
//检查当前项目是普通表单项目还是上传文件。
if (!item.isFormField()) {//如果是上传文件,显示文件名。
String fileName=item.getName();//获得文件名,包括路径
if(fileName!=null){
File fullFile=new File(item.getName());
File savedFile=new File("d:\\upload\\",fullFile.getName());
item.write(savedFile);
}
out.println("the upload fielname is:" + item.getName());
out.println("<br>");
}
}
}else {
out.println("the enctype must be multipart/form-data");
}
%>前天上网copy的,用apache的io包和fileupload包。
<%@page pageEncoding="gbk"
import="org.apache.commons.fileupload.FileUpload,org.apache.commons.fileupload.servlet.ServletFileUpload,org.apache.commons.fileupload.disk.DiskFileItemFactory,java.io.File,java.util.List,java.util.Iterator,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.DiskFileUpload"%>
<%
//检查输入请求是否为multipart表单数据。
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
//为该请求创建一个DiskFileUpload对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
//检查当前项目是普通表单项目还是上传文件。
if (!item.isFormField()) {//如果是上传文件,显示文件名。
String fileName=item.getName();//获得文件名,包括路径
if(fileName!=null){
File fullFile=new File(item.getName());
File savedFile=new File("d:\\upload\\",fullFile.getName());
item.write(savedFile);
}
out.println("the upload fielname is:" + item.getName());
out.println(" <br> ");
}
}
}else {
out.println("the enctype must be multipart/form-data");
}
%>