要实现的功能:
1 使用 struts2 浏览图片,将浏览的图片上传到服务器上
2 不同的图片必须在服务器上存放在不同的文件夹下
3 例如:浏览图片t1.jpg,点击上传,服务器上产生一个相应的文件夹如tt ,在tt下存放t1.jpg重命名后的图片名tt1.jpg
再次浏览图片t2.jpg,点击上传,服务器上将要产生的文件夹名与已经存在的文件夹名tt重名,则将已有的tt文件夹删掉,然后重新创建文件夹tt并在其里面重新放t2.jpg重命名后的图片tt2.jpg
11 个解决方案
#1
最好有完整代码,谢谢
#2
依次明确下你的问题啊:
1.这没啥疑问。
2.不同的图片必须在服务器上存放在不同的文件夹下 --规则是什么?什么叫不同的图片?创建不同文件夹的规则是什么?
3.t1.jpg -->tt文件夹?
x1.jpg-->xx文件夹 ?
abc.jpg-->aa文件夹?
测试.jpg-->测测文件夹?
1.这没啥疑问。
2.不同的图片必须在服务器上存放在不同的文件夹下 --规则是什么?什么叫不同的图片?创建不同文件夹的规则是什么?
3.t1.jpg -->tt文件夹?
x1.jpg-->xx文件夹 ?
abc.jpg-->aa文件夹?
测试.jpg-->测测文件夹?
#3
import java.io.*;
public class FolderManager {
//创建文件夹
public static boolean CreateFolder(String folderpath){
boolean flag=false;
try{
File file=new File(folderpath);
if(!file.exists()){
file.mkdir();
System.out.println("创建文件夹成功了");
}else{
System.out.println("创建文件夹失败了原因是:已经存在此文件夹!!");
}
}catch(Exception e){
System.out.println("创建文件夹时候出现错误!!");
e.printStackTrace();
}
return flag;
}
//删除文件夹
public static boolean DeleteFolder(String folderpath){
boolean flag=false;
try{
File file=new File(folderpath);
if(file.exists()){
if(file.delete()){
flag=true;
System.out.println("删除文件夹成功!!!");
}else{
flag=false;
System.out.println("文件夹内容不许为空!!!否则不能删除");
}
//System.out.println("删除文件夹成功!!!");
}else{
System.out.println("该文件不存在!!!");
}
}catch(Exception e){
e.printStackTrace();
System.out.println("删除文件夹时候出现错误!!!");
}
return flag;
}
//从内存中把数据写到硬盘上并创建文件
public static void createFile(String FilePath,String Context){
File childfile=new File(FilePath);
try {
FileWriter fw=new FileWriter(childfile);
fw.write(Context);
System.out.println("数据写入硬盘成功了");
fw.close();
} catch (IOException e) {
System.out.println("文件写入硬盘出现问题!!!");
e.printStackTrace();
}
}
//从硬盘中删除文件包括数据
public static void deleteFile(String filePath){
File deletefile=new File(filePath);
if(deletefile.exists()){
if(deletefile.delete()){
System.out.println("删除文件成功了");
}else{
System.out.println("文件内容不为空无法删除!!!");
}
}
}
//从硬盘中读取数据到内存中
public static String readfile(String path){
String context="";
String childcontext="";
File myfile=new File(path);
try {
FileReader fr=new FileReader(myfile);
BufferedReader bf=new BufferedReader(fr);
try {
while((childcontext=bf.readLine())!=null){
context=context+childcontext+"\n";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return context;
}
public static void main(String [] arg){
//创建文件夹
String folderpath="F:\\xian.txt";
String aa=FolderManager.readfile(folderpath);
System.out.println(aa);
//FolderManager.CreateFolder(folderpath);
//想文件夹中添加文件
//String filePath="F:\\Love\\xian.txt";
//String Context="?血一样东西真的不容易,不管灾难沃野奥奴隶,否则我付出的都白费了我要努力!!";
//创建一个从内存 中取数据写入硬盘的文件
//FolderManager.createFile(filePath, Context);
//删除带有数据的文件
//FolderManager.deleteFile(filePath);
//删除文件夹
//FolderManager.DeleteFolder(folderpath);
}
}
上面是对文件夹的操作,至于怎么上传文件到哪,你应该已经会了
#4
昨天难道还没解决上传图片问题?
不同的图片必须在服务器上存放在不同的文件夹下,为什么要这样搞呢?
不同的图片必须在服务器上存放在不同的文件夹下,为什么要这样搞呢?
#5
我们头的意思,昨天实现的了图片上传,今天头说必须放在不同的文件夹下
#6
String savePath = ServletActionContext.getServletContext().getRealPath(
""); // 获取项目根路径
savePath = savePath + "/file/";
昨天的那个代码是将图片都上传到file目录下,是写死的
如果改成动态的你加个判断,让savePath每次都变化,具体怎么变,你自己写逻辑判断就行了
""); // 获取项目根路径
savePath = savePath + "/file/";
昨天的那个代码是将图片都上传到file目录下,是写死的
如果改成动态的你加个判断,让savePath每次都变化,具体怎么变,你自己写逻辑判断就行了
#7
恩,知道了,谢谢
#8
照你的意思,第一次上传的图片tt1.jpg将会被删除?
给你一段删除文件夹的代码:
给你一段删除文件夹的代码:
// 删除文件夹
private void deleteFolder(String folderPath){
this.deleteAllFile(folderPath);
new File(folderPath).delete();
}
// 删除文件
private void deleteAllFile(String path){
File file = new File(path);
if(!file.isDirectory()) return ;
if(!file.exists()) return ;
String fileList[] = file.list();
for(int i = 0; i < fileList.length; i++){
String temp = File.separator.endsWith(path) ? path+fileList[i] : path+File.separator+fileList[i];
new File(temp).delete();
if(new File(temp).isDirectory()){
this.deleteAllFile(path + File.separator + fileList[i]);
this.deleteFolder(path + File.separator + fileList[i]);
}
}
}
#9
学习啦!!!
#10
o I see
#11
上传解决了
路径就很容易了
路径就很容易了
#1
最好有完整代码,谢谢
#2
依次明确下你的问题啊:
1.这没啥疑问。
2.不同的图片必须在服务器上存放在不同的文件夹下 --规则是什么?什么叫不同的图片?创建不同文件夹的规则是什么?
3.t1.jpg -->tt文件夹?
x1.jpg-->xx文件夹 ?
abc.jpg-->aa文件夹?
测试.jpg-->测测文件夹?
1.这没啥疑问。
2.不同的图片必须在服务器上存放在不同的文件夹下 --规则是什么?什么叫不同的图片?创建不同文件夹的规则是什么?
3.t1.jpg -->tt文件夹?
x1.jpg-->xx文件夹 ?
abc.jpg-->aa文件夹?
测试.jpg-->测测文件夹?
#3
import java.io.*;
public class FolderManager {
//创建文件夹
public static boolean CreateFolder(String folderpath){
boolean flag=false;
try{
File file=new File(folderpath);
if(!file.exists()){
file.mkdir();
System.out.println("创建文件夹成功了");
}else{
System.out.println("创建文件夹失败了原因是:已经存在此文件夹!!");
}
}catch(Exception e){
System.out.println("创建文件夹时候出现错误!!");
e.printStackTrace();
}
return flag;
}
//删除文件夹
public static boolean DeleteFolder(String folderpath){
boolean flag=false;
try{
File file=new File(folderpath);
if(file.exists()){
if(file.delete()){
flag=true;
System.out.println("删除文件夹成功!!!");
}else{
flag=false;
System.out.println("文件夹内容不许为空!!!否则不能删除");
}
//System.out.println("删除文件夹成功!!!");
}else{
System.out.println("该文件不存在!!!");
}
}catch(Exception e){
e.printStackTrace();
System.out.println("删除文件夹时候出现错误!!!");
}
return flag;
}
//从内存中把数据写到硬盘上并创建文件
public static void createFile(String FilePath,String Context){
File childfile=new File(FilePath);
try {
FileWriter fw=new FileWriter(childfile);
fw.write(Context);
System.out.println("数据写入硬盘成功了");
fw.close();
} catch (IOException e) {
System.out.println("文件写入硬盘出现问题!!!");
e.printStackTrace();
}
}
//从硬盘中删除文件包括数据
public static void deleteFile(String filePath){
File deletefile=new File(filePath);
if(deletefile.exists()){
if(deletefile.delete()){
System.out.println("删除文件成功了");
}else{
System.out.println("文件内容不为空无法删除!!!");
}
}
}
//从硬盘中读取数据到内存中
public static String readfile(String path){
String context="";
String childcontext="";
File myfile=new File(path);
try {
FileReader fr=new FileReader(myfile);
BufferedReader bf=new BufferedReader(fr);
try {
while((childcontext=bf.readLine())!=null){
context=context+childcontext+"\n";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return context;
}
public static void main(String [] arg){
//创建文件夹
String folderpath="F:\\xian.txt";
String aa=FolderManager.readfile(folderpath);
System.out.println(aa);
//FolderManager.CreateFolder(folderpath);
//想文件夹中添加文件
//String filePath="F:\\Love\\xian.txt";
//String Context="?血一样东西真的不容易,不管灾难沃野奥奴隶,否则我付出的都白费了我要努力!!";
//创建一个从内存 中取数据写入硬盘的文件
//FolderManager.createFile(filePath, Context);
//删除带有数据的文件
//FolderManager.deleteFile(filePath);
//删除文件夹
//FolderManager.DeleteFolder(folderpath);
}
}
上面是对文件夹的操作,至于怎么上传文件到哪,你应该已经会了
#4
昨天难道还没解决上传图片问题?
不同的图片必须在服务器上存放在不同的文件夹下,为什么要这样搞呢?
不同的图片必须在服务器上存放在不同的文件夹下,为什么要这样搞呢?
#5
我们头的意思,昨天实现的了图片上传,今天头说必须放在不同的文件夹下
#6
String savePath = ServletActionContext.getServletContext().getRealPath(
""); // 获取项目根路径
savePath = savePath + "/file/";
昨天的那个代码是将图片都上传到file目录下,是写死的
如果改成动态的你加个判断,让savePath每次都变化,具体怎么变,你自己写逻辑判断就行了
""); // 获取项目根路径
savePath = savePath + "/file/";
昨天的那个代码是将图片都上传到file目录下,是写死的
如果改成动态的你加个判断,让savePath每次都变化,具体怎么变,你自己写逻辑判断就行了
#7
恩,知道了,谢谢
#8
照你的意思,第一次上传的图片tt1.jpg将会被删除?
给你一段删除文件夹的代码:
给你一段删除文件夹的代码:
// 删除文件夹
private void deleteFolder(String folderPath){
this.deleteAllFile(folderPath);
new File(folderPath).delete();
}
// 删除文件
private void deleteAllFile(String path){
File file = new File(path);
if(!file.isDirectory()) return ;
if(!file.exists()) return ;
String fileList[] = file.list();
for(int i = 0; i < fileList.length; i++){
String temp = File.separator.endsWith(path) ? path+fileList[i] : path+File.separator+fileList[i];
new File(temp).delete();
if(new File(temp).isDirectory()){
this.deleteAllFile(path + File.separator + fileList[i]);
this.deleteFolder(path + File.separator + fileList[i]);
}
}
}
#9
学习啦!!!
#10
o I see
#11
上传解决了
路径就很容易了
路径就很容易了