如何获取file 文件上传是的参数

如何获取file 文件上传是的参数,第1张

package servlet

import java.io.File

import java.io.IOException

import java.util.Iterator

import java.util.List

import javax.servlet.ServletConfig

import javax.servlet.ServletContext

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import javax.servlet.http.HttpSession

import org.apache.commons.fileupload.FileItem

import org.apache.commons.fileupload.disk.DiskFileItemFactory

import org.apache.commons.fileupload.servlet.ServletFileUpload

public class upload extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 2654821751525075943L

private ServletContext sc

private String savePath

/**

* The doGet method of the servlet. <br>

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request,response)

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String username=""

request.setCharacterEncoding("utf-8")

DiskFileItemFactory factory=new DiskFileItemFactory()

ServletFileUpload upload=new ServletFileUpload(factory)//专门用来完成文件上传的类

try {

List items=upload.parseRequest(request)//解析请求,返回一个存储了所有表单元素的集合

Iterator it=items.iterator()

while(it.hasNext()){

FileItem item=(FileItem)it.next()

if(item.isFormField()){//如果是普通的文本信息,返回true

username=item.getString("utf-8")

}else{

if(item.getName()!=null&&!item.getName().equals("")){//防止抛出空指针,判断一下是否为空

System.out.println("上传文件的大小:"+item.getSize())

System.out.println("上传文件的类型:"+item.getContentType())

System.out.println("上传文件的名称:"+item.getName())

File temp=new File(item.getName())

File file=new File(sc.getRealPath("/")+savePath,temp.getName())

item.write(file)

HttpSession hs=request.getSession()

hs.setAttribute("path", item.getName())

request.setAttribute("msg", "上传文件成功了")

}else{

request.setAttribute("msg", "上传文件失败了")

}

}

}

}catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

request.setAttribute("msg", "上传文件失败了")

}

request.getRequestDispatcher("/result.jsp?username="+username).forward(request, response)

}

/**

* 重写init方法

*/

public void init(ServletConfig config){

savePath=config.getInitParameter("savePath")//获取初始化的参数

sc=config.getServletContext()//获取ServletContext对象,并赋给sc

}

}

[align=right][align=left]DiskFileItemFactory factory=new DiskFileItemFactory()

String path=request.getRealPath("/upload")

System.out.println(path)

factory.setRepository(new File(path))

factory.setSizeThreshold(1024*1024)

ServletFileUpload upload=new ServletFileUpload(factory)

try{

List<FileItem>ls=upload.parseRequest(request)

for (FileItem item : ls) {

if(item.isFormField()){

String name=item.getFieldName()

String value=item.getString("gbk")

request.setAttribute(name, value)

}else{

String name=item.getFieldName()

String value=item.getName()

int start=value.lastIndexOf("\\")

String fileName=value.substring(start+1)

System.out.println(fileName)

request.setAttribute(name, fileName)

Encoding en=new Encoding()

//item.write(new File(path,fileName))

OutputStream os=new FileOutputStream(new File(path,fileName))

InputStream is=item.getInputStream()

byte [] bt=new byte[400]

int length=0

while((length=is.read(bt))>0){

os.write(bt, 0, length)

}

os.close()

is.close()

}

}

}catch (Exception e) {

e.printStackTrace()

}[/align][/align]


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11780349.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存