求救!!!在图片上传的程序中,本地(xp)调试好的程序正常,放到远程服务器(linux)无法正常运行。报:java.io.FileNotFoundException: C:\Documents and Settings\Administrator\桌面\2222.jpg (No such file or directory)
。 at com.servlet.AddGoods.doPost(AddGoods.java:100)
(下面红颜色的那行)主要代码:
String picturePath=request.getParameter("picturePath");
String path=this.getServletContext().getRealPath("/"); 
// 构造数据输入流对象 
  java.io.FileInputStream fis = new java.io.FileInputStream(picturePath); 
  java.io.DataInputStream dis = new java.io.DataInputStream(fis); 
  
   // 构造数据输出流对象 
  java.io.FileOutputStream outFile = new java.io.FileOutputStream(path+"images/"+picPath); 
  java.io.DataOutputStream outData = new java.io.DataOutputStream(outFile); 

解决方案 »

  1.   

    linux和windows 路径符号不同。
      

  2.   

    不要直接用用户送过来的path,自己取个后半截或者干脆用Server自动生成的路径及文件名。
      

  3.   

    不用用户传过来的path,怎么找得到那个图片?
      

  4.   

    建议路径用"\",你可以获取路径测试下,java程序中的路径是和linux本身的路径不一样
      

  5.   

    这个我知道,我是想问,我程序在linux上,怎么得到windows里的图片啊,要上传到服务器上。request得到的是带cdef盘什么的,但是linux不认啊,
      

  6.   

    你这个概念上有偏差。
    浏览器负责读取本地文件并传到服务器,服务器哪能去到客户机上开InputStream呢?
    客户端用于上传的Form是这样的
    <form method='POST' enctype='multipart/form-data' action='YourServlet'>
      

  7.   

    linux和windows 路径符号不同。
      

  8.   


    加了enctype='multipart/form-data'  取不到值,null
      

  9.   

    1 通过enctype="multipart/form-data" ,后台可以从form中取
    <form name="uploadForm"  method="post" enctype="multipart/form-data">
    <input id="fileUpload" name="fileUpload" type="file" class="edit_input" value="" />2 先将文件拷贝到服务器,然后取新地址
      

  10.   

    第二种方法明显不可取。第一种方法的话request得到null,看来只能用上传组件了。
      

  11.   

    当然就不是getParameter这么简单了。这样吧,下面是一个简单的例子,仅仅帮助理解。但是真正用的话,请用CommonsUploadFile等这些成熟的上传框架。
    页面:
    <form method='POST' enctype='multipart/form-data' action='UploadServlet'>
    <input name="file1" type="file" />
    <input name="upload" type="submit" value="上传" />
    </form>UploadServlet: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    InputStream is = request.getInputStream();
    OutputStream os = new FileOutputStream(new File("e:/sample.txt"));
    byte[] b = new byte[request.getContentLength()];
    is.read(b);
    os.write(b);
    os.close();
    PrintWriter out = response.getWriter();
    out.print("file uploading finished。");
    }