Java文件上载上载时重命名文件
我正在使用Servlet上传一个文件,代码如下:Java文件上载上载时重命名文件,java,servlets,file-upload,Java,Servlets,File Upload,我正在使用Servlet上传一个文件,代码如下: FileItem fi = (FileItem) i.next(); String fileName = fi.getName(); out.print("FileName: " + fileName); String contentType = fi.getContentType(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); if (file
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
out.print("FileName: " + fileName);
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
if (fileName == null || fileName == "") {
resumefilepath = "";
} else {
resumeflag = 1;
if (fileName.lastIndexOf("\\") >= 0) {
file = new File(resumePath + fileName.substring(fileName.lastIndexOf("\\")));
} else {
file = new File(resumePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
}
fi.write(file);
我得到的是我的文件被正确上传。我需要用不同的名称上传我的文件,但请确保文件内容不应更改。假设我有一个图像“A.png”,那么它应该保存为“B.png”。请帮助大家??我试过这样做:
File f1 = new File("B.png");
// Rename file (or directory)
file.renameTo(f1);
fi.write(file);
但是不工作假设您引用的是apachecommons
FileItem
您只需控制传递给的文件
实例。此时,文件
对象只是一个抽象名称,文件将通过该方法创建
正是您的代码从FileItem
读取名称,并用相同的名称构造文件
对象。你不必这么做。因此,当您将new File(“B.png”)
传递给FileItem
的write
方法时,代表a.png
上传的内容将保存在文件B.png
中
要按你要求的去做,你可以改变路线
fi.write(file);
到
代码的简化版本可能如下所示:
String fileName = fi.getName();// name provided by uploader
if (fileName == null || fileName == "") {
resumefilepath = "";
} else {
// convert to simple name, i.e. remove any prepended path
fileName = fileName.substring(fileName.lastIndexOf(File.separatorChar)+1);
// your substitution:
if(fileName.equalsIgnoreCase("A.png")) fileName="B.png";
// construct File object
file = new File(resumePath, fileName);
// and create/write the file
fi.write(file);
}
若你们正在寻找一个答案,你们可以上传文件,更改文件名,并将其插入数据库
<%
File file ;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
ServletContext context = pageContext.getServletContext();
String filePath = "/NVS_upload/NVS_school_facilities_img/";
String title=null,description=null,facility_id=null;
ArrayList<String> imagepath=new ArrayList<String>();
String completeimagepath=null;
// Verify the content type
String contentType = request.getContentType();
int verify=0;
//String school_id=null;
String exp_date=null;
String rel_date=null;
int school_id=0;
String title_hindi=null;
String description_hindi=null;
if ((contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("c:\\temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try {
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
while ( i.hasNext () ) {
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () ) {
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
//this genrates unique file name
String id = UUID.randomUUID().toString();
//we are splitting file name here such that we can get file name and extension differently
String[] fileNameSplits = fileName.split("\\.");
// extension is assumed to be the last part
int extensionIndex = fileNameSplits.length - 1;
// add extension to id
String newfilename= id + "." + fileNameSplits[extensionIndex];
//File newName = new File(filePath + "/" +);
//this stores the new file name to arraylist so that it cn be stored in database
imagepath.add(newfilename);
File uploadedFile = new File(filePath , newfilename);
fi.write(uploadedFile);
out.println("Uploaded Filename: " + filePath +
newfilename + "<br>");
}
else if (fi.isFormField()) {
if(fi.getFieldName().equals("title"))
{
title=fi.getString();
out.println(title);
}
if(fi.getFieldName().equals("description"))
{
description=fi.getString();
//out.println(description);
}
if(fi.getFieldName().equals("activity_name"))
{
facility_id=fi.getString();
//out.println(facility_id);
}
if(fi.getFieldName().equals("rel_date"))
{
rel_date=fi.getString();
//out.println(school_id);
}
if(fi.getFieldName().equals("exp_date"))
{
exp_date=fi.getString();
// out.println(school_id);
}
if(fi.getFieldName().equals("school_id"))
{
school_id=Integer.valueOf(fi.getString());
// out.println(school_id);
}
if(fi.getFieldName().equals("title-hindi"))
{
title_hindi=fi.getString();
// out.println(school_id);
}
if(fi.getFieldName().equals("description-hindi"))
{
description_hindi=fi.getString();
out.println(school_id);
}
}
}
out.println("</body>");
out.println("</html>");
} catch(Exception ex) {
out.println(ex);
}
}
else {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
}
%>
<%
try{
completeimagepath=imagepath.get(0)+","+imagepath.get(1)+","+imagepath.get(2);
Connection conn = null;
Class.forName("org.postgresql.Driver").newInstance();
conn = DriverManager.getConnection(
"connection url");
PreparedStatement ps=conn.prepareStatement("INSERT INTO activities_upload (activity_name,title,description,pdfname,publish_date,expiry_date,title_hindi,description_hindi,school_id) VALUES(?,?,?,?,?,?,?,?,?)");
ps.setString(1,facility_id);
ps.setString(2,title);
ps.setString(3,description);
ps.setString(4,completeimagepath);
ps.setDate(5,java.sql.Date.valueOf(rel_date));
ps.setDate(6,java.sql.Date.valueOf(exp_date));
ps.setString(7,title_hindi);
ps.setString(8,description_hindi);
ps.setInt(9,school_id);
verify=ps.executeUpdate();
}
catch(Exception e){
out.println(e);
}
if(verify>0){
HttpSession session = request.getSession(true);
session.setAttribute("updated","true");
response.sendRedirect("activitiesform.jsp");
}
%>
=0){
DiskFileItemFactory=新的DiskFileItemFactory();
//将存储在内存中的最大大小
factory.setSizeThreshold(maxMemSize);
//保存大于maxMemSize的数据的位置。
setRepository(新文件(“c:\\temp”);
//创建新的文件上载处理程序
ServletFileUpload upload=新的ServletFileUpload(工厂);
//要上载的最大文件大小。
upload.setSizeMax(maxFileSize);
试试{
//解析请求以获取文件项。
List fileItems=upload.parseRequest(请求);
//处理上载的文件项
迭代器i=fileItems.Iterator();
而(i.hasNext()){
FileItem fi=(FileItem)i.next();
如果(!fi.isFormField()){
//获取上传的文件参数
字符串fieldName=fi.getFieldName();
字符串文件名=fi.getName();
布尔值isInMemory=fi.isInMemory();
long-sizeInBytes=fi.getSize();
//此文件名是唯一的
字符串id=UUID.randomUUID().toString();
//我们在这里拆分文件名,以便以不同的方式获得文件名和扩展名
字符串[]fileNameSplits=fileName.split(“\\”);
//假设扩展是最后一部分
int extensionIndex=fileNameSplits.length-1;
//向id添加扩展名
字符串newfilename=id+“+”fileNameSplits[extensionIndex];
//File newName=新文件(filePath+“/”+);
//这会将新文件名存储到arraylist,以便将其存储在数据库中
添加(新文件名);
文件上传文件=新文件(文件路径,新文件名);
fi.write(上传文件);
out.println(“上传的文件名:+filePath+
新文件名+“
”;
}
else if(fi.isFormField()){
if(fi.getFieldName().equals(“title”))
{
title=fi.getString();
out.println(标题);
}
if(fi.getFieldName().equals(“description”))
{
description=fi.getString();
//out.println(描述);
}
if(fi.getFieldName().equals(“活动名称”))
{
facility_id=fi.getString();
//out.println(设施标识);
}
如果(fi.getFieldName().equals(“rel_date”))
{
rel_date=fi.getString();
//out.println(学校id);
}
如果(fi.getFieldName().equals(“exp_日期”))
{
exp_date=fi.getString();
//out.println(学校id);
}
如果(fi.getFieldName().equals(“学校id”))
{
school_id=Integer.valueOf(fi.getString());
//out.println(学校id);
}
if(fi.getFieldName().equals(“title印地语”))
{
title_hindi=fi.getString();
//out.println(学校id);
}
if(fi.getFieldName().equals(“描述印地语”))
{
description_hindi=fi.getString();
out.println(学校id);
}
}
}
out.println(“”);
out.println(“”);
}捕获(例外情况除外){
out.println(ex);
}
}
否则{
out.println(“”);
out.println(“”);
out.println(“Servlet上传”);
out.println(“”);
out.println(“”);
out.println(“没有上传文件””;
out.println(“”);
out.println(“”);
}
%>
0){
HttpSession session=request.getSession(true);
session.setAttribute(“更新”、“真”);
sendRedirect(“activitiesform.jsp”);
}
%>
用于重命名文件。@Braj您能编辑我的代码并粘贴为答案吗???@Braj在其他示例中,他们正在创建新文件,然后保存,在这种情况下会丢失我文件的内容,我需要将我的页面内容保留在那里!!不能更改内容,只能更改名称首先将文件保存在磁盘上,然后重命名它。fi.renameTo()方法出现错误@Hogler buddy是的,我正在使用pache Commons文件项。你能告诉我如何编辑我的代码来做同样的事情吗?我不是你这样的专家。请帮帮我buddy@Hoglerbuddy同一问题,但名称未更改!!您确定输入名称是“A.png”
?您可以添加日志记录语句以了解实际值。我确信write
方法将写入您指定的文件,而不会写入其他文件。您还应该确认您没有看到
<%
File file ;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
ServletContext context = pageContext.getServletContext();
String filePath = "/NVS_upload/NVS_school_facilities_img/";
String title=null,description=null,facility_id=null;
ArrayList<String> imagepath=new ArrayList<String>();
String completeimagepath=null;
// Verify the content type
String contentType = request.getContentType();
int verify=0;
//String school_id=null;
String exp_date=null;
String rel_date=null;
int school_id=0;
String title_hindi=null;
String description_hindi=null;
if ((contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("c:\\temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try {
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
while ( i.hasNext () ) {
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () ) {
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
//this genrates unique file name
String id = UUID.randomUUID().toString();
//we are splitting file name here such that we can get file name and extension differently
String[] fileNameSplits = fileName.split("\\.");
// extension is assumed to be the last part
int extensionIndex = fileNameSplits.length - 1;
// add extension to id
String newfilename= id + "." + fileNameSplits[extensionIndex];
//File newName = new File(filePath + "/" +);
//this stores the new file name to arraylist so that it cn be stored in database
imagepath.add(newfilename);
File uploadedFile = new File(filePath , newfilename);
fi.write(uploadedFile);
out.println("Uploaded Filename: " + filePath +
newfilename + "<br>");
}
else if (fi.isFormField()) {
if(fi.getFieldName().equals("title"))
{
title=fi.getString();
out.println(title);
}
if(fi.getFieldName().equals("description"))
{
description=fi.getString();
//out.println(description);
}
if(fi.getFieldName().equals("activity_name"))
{
facility_id=fi.getString();
//out.println(facility_id);
}
if(fi.getFieldName().equals("rel_date"))
{
rel_date=fi.getString();
//out.println(school_id);
}
if(fi.getFieldName().equals("exp_date"))
{
exp_date=fi.getString();
// out.println(school_id);
}
if(fi.getFieldName().equals("school_id"))
{
school_id=Integer.valueOf(fi.getString());
// out.println(school_id);
}
if(fi.getFieldName().equals("title-hindi"))
{
title_hindi=fi.getString();
// out.println(school_id);
}
if(fi.getFieldName().equals("description-hindi"))
{
description_hindi=fi.getString();
out.println(school_id);
}
}
}
out.println("</body>");
out.println("</html>");
} catch(Exception ex) {
out.println(ex);
}
}
else {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
}
%>
<%
try{
completeimagepath=imagepath.get(0)+","+imagepath.get(1)+","+imagepath.get(2);
Connection conn = null;
Class.forName("org.postgresql.Driver").newInstance();
conn = DriverManager.getConnection(
"connection url");
PreparedStatement ps=conn.prepareStatement("INSERT INTO activities_upload (activity_name,title,description,pdfname,publish_date,expiry_date,title_hindi,description_hindi,school_id) VALUES(?,?,?,?,?,?,?,?,?)");
ps.setString(1,facility_id);
ps.setString(2,title);
ps.setString(3,description);
ps.setString(4,completeimagepath);
ps.setDate(5,java.sql.Date.valueOf(rel_date));
ps.setDate(6,java.sql.Date.valueOf(exp_date));
ps.setString(7,title_hindi);
ps.setString(8,description_hindi);
ps.setInt(9,school_id);
verify=ps.executeUpdate();
}
catch(Exception e){
out.println(e);
}
if(verify>0){
HttpSession session = request.getSession(true);
session.setAttribute("updated","true");
response.sendRedirect("activitiesform.jsp");
}
%>