我看了下上传到了\Tomcat 6.0\webapps\test\shop\images  在本地项目却不显示,这个该怎么调呢,如果正式部署之后应该图片上传到服务器本地吧  请指教

解决方案 »

  1.   

    楼主看这里/**
     * Servlet implementation class AddCssServlet
     */
    @WebServlet(name = "UploadServlet", urlPatterns = { "/upload" })
    public class UploadServletextends HttpServlet {
    private static final long serialVersionUID = 1L; /**
     * @see HttpServlet#HttpServlet()
     */
    public UploadServlet() {
    super();
    // TODO Auto-generated constructor stub
    } /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html"); PrintWriter out = response.getWriter(); // 设置上传文件保持路径
    String filepath = this.getServletContext().getRealPath("/upload");
    System.out.println(filepath);
    File uploadDir = new File(filepath); // 如果该文件夹不存在则创建
    if (!uploadDir.exists()) {
    uploadDir.mkdirs();
    } // 获取服务器默认的临时文件夹
    String temp = System.getProperty("java.io.tmpdir");
    File tempDir = new File(temp); // 如果该文件夹不存在,则创建
    if (!tempDir.exists()) {
    tempDir.mkdirs();
    }
    // 创建文件项目工厂对象
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // 设置临时文件夹
    factory.setRepository(new File(temp));
    // 设置缓冲区大小为 1M
    factory.setSizeThreshold(1024 * 1024);
    ServletFileUpload serveltFileUpload = new ServletFileUpload(factory); // 解析文件上传请求,解析结果放在 List中
    try {
    List<FileItem> list = serveltFileUpload.parseRequest(request);
    for (FileItem item : list) {
    // 判断某项是否是普通的表单类型。
    if (item.isFormField()) { //该表单项是普通类型
    // 忽略简单form字段而不是上传域的文件域
    continue;

    } else { // 否则文件域
    // 获取上传文件名
    String fileName = item.getName();
    // 此时的文件名包含了完整的路径,得注意加工一下
    System.out.println("完整的文件名:" + fileName); 
    int index = fileName.lastIndexOf("\\");  
    fileName = fileName.substring(index + 1, fileName.length());
    // 创建文件输入流
    InputStream in = item.getInputStream();
    // 创建一个指向 File 对象所表示的文件中写入数据的文件输出流
    FileOutputStream outs = new FileOutputStream(new File(
    filepath, fileName));
    int len = 0;
    // 创建字节数组 ,大小位 1024字节
    byte[] buffer = new byte[1024];
    out.println("上传文件名称:" + fileName + "<br/>");
    out.println("上传文件大小:" + item.getSize() / 1024 + " KB("
    + item.getSize() + " 字节)<br/>");
    while ((len = in.read(buffer)) != -1) {
    // 字节数组从偏移量 0 到len 个字节写入文件输出流
    outs.write(buffer, 0, len);
    }
    // 关闭输入流
    in.close();
    // 关闭输出流
    outs.close();
    }
    }
    } catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally { }
    } /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
    }}博客里有http://blog.csdn.net/u012895467/article/details/17393823
      

  2.   


    上传的文件的将存储在你的服务器的临时目录下。所以你上传的图片是存在了Tomcat目录下,需要更改项目部署时的路径。在Eclipse中集成好Tomcat之后,发布我们的项目,然后菜单栏选择Window-->show view-->services,查看服务面板,双击Tomcat进入配置界面修改Server Locations。
        默认选项为:Use workspace metadata(dose not modify Tomcat installation) 
        修改选项为:Use Tomcat installation(takes control of Tomcat installation)更改配置后就变成你的项目路径了若修改配置时显示灰色无法更改,此时我们需要右击选择clean将Tomcat下的所有项目一处方可设置。
    Eclipse每次部署发布项目时会将上一次部署的所有内容删除,然后再重新部署。所以,若上传文件时保存路径指向的是Tomcat中部署的文件内,每次重新部署发布就会将之前上传的文件全部清空。http://blog.csdn.net/u012895467/article/details/17393823