文件上传处理程序 [英] File Upload handler
本文介绍了文件上传处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是工作正常在我的服务器,但上传文件后,它只显示文件上传成功
,但我也想显示文件的名称已上传
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadHandler extends HttpServlet {
private final String UPLOAD_DIRECTORY =C:/ uploads;
$ b @Override
保护无效doPost(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException,IOException {
//只处理其多部分内容
if(ServletFileUpload.isMultipartContent(request)){
try {
List< FileItem> multiparts = new ServletFileUpload(
new DiskFileItemFactory())。parseRequest(request); (FileItem item:multiparts){
if(!item.isFormField()){
String name = new File(item.getName())。getName()返回
。 ;
item.write(new File(UPLOAD_DIRECTORY + File.separator + name));
$ b //文件上传成功
request.setAttribute(message,File Uploaded Successfully);
} catch(Exception ex){
request.setAttribute(message,File Upload Failed due to+ ex);
$ b} else {
request.setAttribute(message,
对不起,这个Servlet只处理文件上传请求);
request.getRequestDispatcher(/ done.jsp)。forward(request,response);
$ b 解决方案将 item.getName()
存储在一个变量中供以后使用。因为你正在使用一个循环,所以你将不得不跟踪多个文件名。 String fileNames = ; //保存文件名列表
(FileItem item:multiparts){
if(!item.isFormField()){
fileNames + = item.getName()+;; //将文件名添加到字符串
String name = new File(item.getName())。getName();
item.write(new File(UPLOAD_DIRECTORY + File.separator + name));
.....
request.setAttribute(message,File(s)Uploaded Successfully:+ fileNames);
This is a code of File Upload Handler
This is working Fine on my server but after uploading file it only displays File Uploaded successfully
but i also want to display the name of file which is uploaded
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadHandler extends HttpServlet {
private final String UPLOAD_DIRECTORY = "C:/uploads";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//process only if its multipart content
if(ServletFileUpload.isMultipartContent(request)){
try {
List<FileItem> multiparts = new ServletFileUpload(
new DiskFileItemFactory()).parseRequest(request);
for(FileItem item : multiparts){
if(!item.isFormField()){
String name = new File(item.getName()).getName();
item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
}
}
//File uploaded successfully
request.setAttribute("message", "File Uploaded Successfully");
} catch (Exception ex) {
request.setAttribute("message", "File Upload Failed due to " + ex);
}
}else{
request.setAttribute("message",
"Sorry this Servlet only handles file upload request");
}
request.getRequestDispatcher("/done.jsp").forward(request, response);
}
}
解决方案 Store item.getName()
in a variable for later use. Since you are using a loop, you'll have to keep track of multiple filenames if there are any.
String fileNames = ""; //to keep list of filenames
for(FileItem item : multiparts){
if(!item.isFormField()){
fileNames += item.getName() + "; "; //add filename to string
String name = new File(item.getName()).getName();
item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
}
}
.....
.....
request.setAttribute("message", "File(s) Uploaded Successfully: " + fileNames );
这篇关于文件上传处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文