服务器找不到要上传图片的路径

时间:2022-03-01 12:17:10
路径是正确的。但是找上传文件的时候直接去服务器上面去找了,而不是在本地找。如何解决呢,等待指点迷津

private static final int BUFFER_SIZE = 16*1024;

  private File myFile;
  private String contentType;
  private String fileName;
  private String imageFileName;
  private String caption;
    
  public void setMyFileContentType(String contentType) {
  this .contentType = contentType;
  }  
    
  public void setMyFileFileName(String fileName) {
  this .fileName = fileName;
    
    
    
  }  
    
  public void setMyFile(File myFile) {
  this .myFile = myFile;
  }  
    
  public String getImageFileName() {
  return imageFileName;
  }  
    
  public String getCaption() {
  return caption;
  }  

  public void setCaption(String caption) {
  this .caption = caption;
  }

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType(CONTENT_TYPE);
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");

Configuration config = new Configuration();

request.setCharacterEncoding("utf-8");

String url = request.getParameter("myFile");
int i = url.lastIndexOf("\\");
String fnames = url.substring(i+1);
this.myFile = new File(url);
File imageFile = new File(config.getWebPath()+ "theme/default/images"  + "/" + fnames);
int iCount = 0;
iCount = copy(myFile, imageFile);
}

private static int copy(File src, File dst)  {
        try  {
           InputStream in = null ;
           OutputStream out = null ;
            try  {                
               in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
               out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
                byte [] buffer = new byte [BUFFER_SIZE];
                while (in.read(buffer) > 0 )  {
                   out.write(buffer);
               } 
                return 1;
            } finally  {
                if ( null != in)  {
                   in.close();
               } 
                 if ( null != out)  {
                   out.close();
               } 
           } 
        } catch (Exception e)  {
           e.printStackTrace();
           return -1;
       } 
   } 

19 个解决方案

#1


顶一下。谁来给我指点迷津啊……

#2


你的服务部署在哪里,那就肯定是在哪里找你的路径咯

#3


服务器找不到要上传图片的路径楼主太可爱了,你这操作的就是本地文件,上传文件不是这么搞滴。。。

http://blog.csdn.net/javawing/archive/2006/04/25/676196.aspx

#4


如果图片在服务器上,应该把路径指向服务器

#5


不太清楚呢!帮项一下!

#6


那个代码是我从网上搜的,说是struts2上传文件……

#7


#8


看结果,学习

#9


楼主你上当了
这段代码看起来象Stuts2 + Servlet 的奇怪混合
而且有致命错误

上传文件的原理很简单,客户端随request传送File对象过来,服务器端将它保存到硬盘就Ok了,你可以看看其它简单例子,看明白了才用

#10


引用 3 楼 x19881216 的回复:
楼主太可爱了,你这操作的就是本地文件,上传文件不是这么搞滴。。。

http://blog.csdn.net/javawing/archive/2006/04/25/676196.aspx

try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request); Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)fileItems.get(0);
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
System.out.println("fileName:"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(fileName));
iCount = 1;
}
}catch(Exception e) {
    // 可以跳转出错页面
}

红色代码部分取不到数据,咋回事啊?

#11


try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
[code=Java]
List fileItems = fu.parseRequest(request);(

Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)fileItems.get(0);
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
System.out.println("fileName:"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(fileName));
iCount = 1;
}
}catch(Exception e) {
    // 可以跳转出错页面
}[/code]
红色部分取不到数据,咋回事啊?

#12


// 得到所有的文件:
List fileItems = fu.parseRequest(request);

这句代码为什么获取不到数据啊?

#13


struts拦截了所有的request,原始的request是取不到数据的

直接用

MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload是表单file空间的name这里就可以拿到所有的文件了,然后就跟操作普通文件一样了
String[] fileNames = mrw.getFileNames("upload");//获取所有的文件名,跟files里对应

#14


引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload是表单file空间的name这里就可以拿到所有的文……

但是我没有使用struts啊,项目使用的是DWR,Hibernate,Spring。
应该不存在struts拦截啊
还有就是用MultiPartRequestWrapper是不是需要某个jar包啊?

#15


引用 14 楼 newlife_bj 的回复:
引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload……


额你的代码就是struts2的搞法额。。。

#16


路径问题。

#17


引用 15 楼 x19881216 的回复:
引用 14 楼 newlife_bj 的回复:

引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.g……

出了struts2的方法,还有别的实现方式吗?

#19


先给分吧,小绵羊的嘴皮子都快磨破了

#1


顶一下。谁来给我指点迷津啊……

#2


你的服务部署在哪里,那就肯定是在哪里找你的路径咯

#3


服务器找不到要上传图片的路径楼主太可爱了,你这操作的就是本地文件,上传文件不是这么搞滴。。。

http://blog.csdn.net/javawing/archive/2006/04/25/676196.aspx

#4


如果图片在服务器上,应该把路径指向服务器

#5


不太清楚呢!帮项一下!

#6


那个代码是我从网上搜的,说是struts2上传文件……

#7


#8


看结果,学习

#9


楼主你上当了
这段代码看起来象Stuts2 + Servlet 的奇怪混合
而且有致命错误

上传文件的原理很简单,客户端随request传送File对象过来,服务器端将它保存到硬盘就Ok了,你可以看看其它简单例子,看明白了才用

#10


引用 3 楼 x19881216 的回复:
楼主太可爱了,你这操作的就是本地文件,上传文件不是这么搞滴。。。

http://blog.csdn.net/javawing/archive/2006/04/25/676196.aspx

try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request); Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)fileItems.get(0);
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
System.out.println("fileName:"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(fileName));
iCount = 1;
}
}catch(Exception e) {
    // 可以跳转出错页面
}

红色代码部分取不到数据,咋回事啊?

#11


try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
[code=Java]
List fileItems = fu.parseRequest(request);(

Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)fileItems.get(0);
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
System.out.println("fileName:"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(fileName));
iCount = 1;
}
}catch(Exception e) {
    // 可以跳转出错页面
}[/code]
红色部分取不到数据,咋回事啊?

#12


// 得到所有的文件:
List fileItems = fu.parseRequest(request);

这句代码为什么获取不到数据啊?

#13


struts拦截了所有的request,原始的request是取不到数据的

直接用

MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload是表单file空间的name这里就可以拿到所有的文件了,然后就跟操作普通文件一样了
String[] fileNames = mrw.getFileNames("upload");//获取所有的文件名,跟files里对应

#14


引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload是表单file空间的name这里就可以拿到所有的文……

但是我没有使用struts啊,项目使用的是DWR,Hibernate,Spring。
应该不存在struts拦截啊
还有就是用MultiPartRequestWrapper是不是需要某个jar包啊?

#15


引用 14 楼 newlife_bj 的回复:
引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.getFiles("upload");//upload……


额你的代码就是struts2的搞法额。。。

#16


路径问题。

#17


引用 15 楼 x19881216 的回复:
引用 14 楼 newlife_bj 的回复:

引用 13 楼 x19881216 的回复:
struts拦截了所有的request,原始的request是取不到数据的

直接用

Java code


MultiPartRequestWrapper mrw = (MultiPartRequestWrapper) request;
File[] files = mrw.g……

出了struts2的方法,还有别的实现方式吗?

#18


#19


先给分吧,小绵羊的嘴皮子都快磨破了

#20