servlet上传文件参数
1. 在servlet中怎样上传文件
//新建一个Smartupload对象
SmartUpload su=new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限度
//1.限定每个上传文件的最大长度
//su.setMaxFileSize(100000);
//2.限制总上传数据的长度。
//su.setTotalMaxFileSize(20000);
//3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
//su.setAllowFilesList("doc,text");
//4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件或没有扩展名的文件
//su.setDeniedDilesList("exe,bat,jsp,html,htm,,");
//上传文件
su.upload();
//将上传文件全部保存到指定目录
int count=su.save("/upload");
out.println(count+"个上传文件成功!<br>");
//利用Request对象获取参数之值
out.println("test="+su.getRequest().getParameter("test")+"<br><br>");
//逐一提取上传文件信息,同时可保存文件。
for(int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file=su.getFiles().getFile(i);
//若文件不存在则继续
if(file.isMissing())
continue;
//显示当前文件信息
out.println("<table border=1>");
out.println("<tr><td>表单项名(FiledName)</td><td>"+file.getFieldName()+"</tr></tr>");
out.println("<tr><td>文件长度(Size)</td><td>"+file.getSize()+"</td><td>");
out.println("<tr><td>文件名(FileName)</td><td>"+file.getFileName()+"</tr></tr>");
out.println("<tr><td>文件扩展名(FiledExt)</td><td>"+file.getFileExt()+"</tr></tr>");
out.println("<tr><td>文件全名(FiledPathName)</td><td>"+file.getFilePathName()+"</tr></tr>");
out.println("</table><br>");
//将文件另存
//file.saveAs("/upload/"+myFile.getFileName());
//另存到以web应用程序的根目录为文件根目录的目录下
//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);
//另存到操作系统的根目录为文件根目录的目录下
//file.safeAs("c://temp//"+myFile.getFileName(),su.SAVE_PHYSICAL);
}
上面就是了。。。。祝你好运哈!
2. jsp+servlet实现文件上传问题
try{
//1.获得上传帮助类SmartUpload SmartUpload su = new SmartUpload();
//2.设置上传允许大小,以B为单位 su.setMaxFileSize(3*1024*1024);
//3.设置允许上传图片格式 su.setAllowedFilesList("jpg,gif,bmp");
//4.初始化
su.initialize(this.getServletConfig(), request, response);
//上传
su.upload();
//获取上传文件的入口,客户端会认为上传是一堆文件 Files files = su.getFiles();
//上传一个,从0开始
File file = files.getFile(0);
//上传文件的名字
String fileName = file.getFileName();
//上传文件的后缀名
String fileExt = file.getFileExt();
//上传文件的大小
int fileSize = file.getSize();
//获取页面提交的值,此处的request不再是HttpServletRequest,必须使用SmartUpload提供的request
Request myreq = su.getRequest();
String username = myreq.getParameter("username");
String password = myreq.getParameter("password");
//设置上传图片的路径地址
java.io.File truefile = new java.io.File(this.getServletContext().getRealPath("/image"));
//不存在则创建
if(!truefile.exists()){
truefile.mkdir();
}
//对图片进行重命名 String trueFileName = new UUIDGenerator().generate().toString()+"."+fileExt;
//最终路径/image/435454343.jpg
String finalPath = "/"+truefile.getName()+"/"+trueFileName;
file.saveAs(finalPath);
3. servlet 文件上传 ,急急
你看看下面这个、
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>文件提示</TITLE></HEAD>");
out.println("<BODY>");
// 这里对request进行封装,RequestContext提供了对request多个访问方法
RequestContext requestContext = new ServletRequestContext(request);
// 判断表单是否是Multipart类型的
if (FileUpload.isMultipartContent(requestContext)) {
// 实例化一个硬盘工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置缓存区的大小
factory.setSizeThreshold(1024 * 1024);
// 设置目标临时文件夹
String temp=this.getServletContext().getRealPath("/") + "FileTemp";
// 设置目标文件夹路径
String path = this.getServletContext().getRealPath("/") + "File";
// 设置上传文件夹路径
factory.setRepository(new File(temp));
// 上传组件
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置文件上传的大小
upload.setFileSizeMax(3 * 1024 * 1024);
List<FileItem> fileList = null;
try {
// 获取文件列表
fileList = upload.parseRequest(request);
} catch (FileUploadException e) {
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超过规定大小:" + 3 * 1024 * 1024 + "字节<p/>");
out
.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">返回</a>");
return;
}
e.printStackTrace();
} // 得到所有上传文件
Iterator<FileItem> it = fileList.iterator();
while (it.hasNext()) {
// 得到系统时间
long now = System.currentTimeMillis();
// 将long类型转换为String类型
String prefix = String.valueOf(now);
FileItem fileItem = (FileItem) it.next();
// 得到文件的后缀
String postfix = fileItem.getName().substring(
fileItem.getName().lastIndexOf(".") + 1); // 保存文件,其实就是把缓存里的数据写到目标路径下
File newFile = new File(path + "/" + prefix + "." + postfix);
// 文件列表为空
if (fileItem.getName() == null || fileItem.getName() == "") {
out.println("请选择上传文件<p />");
out
.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">返回</a>");
return;
}
try {
if (newFile.createNewFile())
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
out.println("文件上传成功. 已保存为: " + prefix + "." + postfix
+ " 文件大小:" + fileItem.getSize() + "字节<p />");
}
}
out.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">继续上传</a>");
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
}}
还有一种方式更简单、我也给你、用的是jspsmartupload、、、 public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>图片上传</TITLE></HEAD>");
out.println("<BODY>");
// 新建一个SmartUpload对象
SmartUpload smart = new SmartUpload();
// 上传初始化
smart.initialize(servletconfig, request, response);
try {
smart.upload();
} catch (SmartUploadException e) {
e.printStackTrace();
}
com.jspsmart.upload.File myFile = smart .getFiles().getFile(0);
// 得到系统时间
long now = System.currentTimeMillis();
// 将long类型转换为String类型
String filename = String.valueOf(now);
// 得到文件的后缀
String postfix = myFile .getFileExt(); //取得文件的大小
int file_size=myFile.getSize();
// 将上传文件全部保存到指定目录
try {
smart.getFiles().getFile(0).saveAs("/images/" + filename+postfix);
} catch (SmartUploadException e) {
e.printStackTrace();
}
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
} 写的有点乱、至于相关包的话、你就自己去找吧、应该能找到的、祝你好运、
4. 通过 java (servlet) 实现两个web工程间的文件传输
这个思路很简单,如下:
1、访问A的servlet,我们在这个Servlet里面取到这个文件,这个很容易是吧
2、在A的servlet将取到的文件(inputstrema格式),以post的形式,模拟表单提交给B的servlet
3、在B的servlet里面接收,就像接收普通的表单上传的一样
下面是一些上传和接收的核心代码,使用的httpclient
A里面的上传:
HttpClient httpclient = new DefaultHttpClient();
String url = “这里是B的servlet的访问的地址,全地址”;
HttpPost httppost = new HttpPost(url);
// 一个本地的文件
InputStreamBody fileis = new InputStreamBody(is, fileName);
// 多部分的实体
MultipartEntity reqEntity = new MultipartEntity();
// 增加
reqEntity.addPart("bin", fileis);
// 设置
httppost.setEntity(reqEntity);
HttpResponse responses = null;
try {
responses = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (Validator.isNotNull(responses)) {
int httpstatus = responses.getStatusLine().getStatusCode();
if(httpstatus!=200){
System.out.println(url+"访问错误,http状态"+httpstatus);
}
}
B里面接收文件的核心代码,使用的fileupload
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
FileItem file = null;
if (items.size()>0) {
file =(FileItem)items.get(0);
}
5. 怎么用servlet上传文件到该WEB项目的WebRoot的某文件夹下啊是相对路径不是绝对路径,请问怎么做啊
这个问题我以前也有过,但后来我明白了,虽然说JSP能编译为Servlet但是,这只是web容器的功劳。你要是边几个项目就会明白。好的WEB程序里。JSP和HTML文件的编写是一样的。除了一些必要的处理代码块。但是很少有。一般处理请求的都放在了servlet里,现在Struts很好的封装了Servlet这一层,成为了servelt的专业框架。用来处理用户的请求。但有必要的时候,我们还必须自己去写Servlet,比如过滤器,再比如监听器等。
所以说,虽然JSP能编译为Servlet但并不代表他就能替代Servlet。一般的web项目尽量将显示代码放进jsp中
而处理代码放进Servlet中。以增加可读性,可拓展性。可维护性。可能我说的有点深奥,但是你以后去做项目时就会明白了。
JSP是绝不能替代Servlet的。希望对你有帮助。
6. 怎样用servlet实现文件上传
编写上传页面,在WebContent目录下创建一个NewFile.jsp文件,并编写如下代码。注意: 必须加上 enctype="multipart/form-data" .表示以二进制的数据格式来传输。
开发处理文件上传的Servlet
1、使用注解@MultipartConfig将一个Servlet标识为支持文件上传。
2、Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。
将控制台打印的文件上传地址复制到地址栏。查看上传的文件,页面提示上传成功!
在编写servlet时,应该注意 必须注解 @MultipartConfig 将一个Servlet标识为支持文件上传,否则会导致上传失败。还有就是JSP页面上 form表单中 ,必须加上 enctype="multipart/form-data" .表示以二进制的数据格式来传输。
文件上传servlet类的代码编写。dopost()方法中的主要代码:(读者可参考注释自行进行编写,然后按照以上步骤进行测试)。
request.setCharacterEncoding("utf-8"); //获取文件部件part Part part=request.getPart("filename"); //获取服务器的路径 即上传路径 String root=request.getServletContext().getRealPath("/file"); //获取上传文件的头部信息 String headname=part.getHeader("content-disposition"); //获取文件后缀名 String ext = headname.substring(headname.lastIndexOf("."), headname.length()-1); // 上传目的地完整的路径 String filename=root+"/"+UUID.randomUUID().toString()+ext; System.out.println(filename); //导入文件 part.write(filename); request.setAttribute("info", "上传成功!"); request.getRequestDispatcher("/NewFile.jsp").forward(request, response); }
7. jsp+servlet 怎么实现文件上传
你要做文件上传吧 form表单里一定要设置这两个值enctype="multipart/form-data" method="post"
上传成功后会在tomcat里有那个文件 ,至于你说的要获取io流。那就需要找到那个文件给你写一下伪码吧:
//获得上传文件的路径
String path = getServletContext().getRealPath(webpath);
File file = new File(path);
file.getParentFile().mkdirs();
file.createNewFile();
// 获得流
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(file);
不懂的再问我!
建议你用个上传组件,fileupload什么的
8. 怎样在Servlet中获得jsp上传文件的名称
可以使用commons-fileupload组件实现文件上传,步骤如下:
1、添加jar包:commons-fileupload-x.x.x.jar和commons-io-2.4.jar
2、编写或修改form表单
1) 提交方式必须是post
2) 为表单增加属性enctype="multipart/form-data"
3) 为文件上传单独提供servlet,因为增加enctype属性后,无法使用常规的请求对象来获取提交的数据
3、使用Commons-FileUpload组件实现文件的上传
1) 确定本次请求是否是文件上传请求
boolean flag=ServletFileUpload.isMultipartContent(request);
2) 创建文件上传的工厂对象
FileItemFactory factory=new DiskFileItemFactory();
3) 创建ServletFileUpload对象,并将工厂对象作为参数传入
ServletFileUpload upload=new ServletFileUpload(factory);
4) 使用上传对象从请求对象中解析出提交的所有表单元素
List<FileItem> lstForms=upload.parseRequest(request);
5) 遍历表单元素集合,实现取出表单元素和上传文件
//遍历所有表单元素
for (FileItem fileItem : lstForms) {
//判断每一个表单元素是否是普通表单
if(fileItem.isFormField()){
System.out.println(fileItem.getString("UTF-8"));
}else{
//上传前准备工作
//a、上传后的路径this.getServletContext().getRealPath("/")会出去当前项目在 部署的服务器上的绝对路径
String path=this.getServletContext().getRealPath("/")+"files/";
//b、找出要上传的文件的名字
String fileName=fileItem.getName();
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
//c、上传
fileItem.write(new File(path+fileName));
out.println("<h2>"+fileName+"上传成功!</h2>");
}
}
附件为文件上传的完整代码,包括验证上传的必须是图片!
9. servlet 上传文件时,初始化方法里面参数怎么写su.initialize();
初始化方法
用于servlet
第一次初始化用的。
并不是每次都调用。
因此
业务处理可以不用写在
initialize
里面。
除非是
你想在
servlet
第一次初始化的时候做一些操作。比如从配置文件
读取
上传文件目录等事情。
初始化方法里面默认方法是.调用父类中的
servlet初始化
super.initialize();
如果有疑问,请追问。
如果能帮助到你,请采纳为答案。