tomcat图片上传指定位置并显示(修改配置文件)

本文介绍如何在Tomcat服务器上进行文件上传配置,并提供了一个Java Servlet实例来演示如何实现文件上传、处理以及数据库更新。文章还展示了如何解决中文乱码问题及文件名唯一化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.修改tomcat配置文件

171722_5Da1_2931727.png

2.在其中添加要上传的位置

1)172252_rjmQ_2931727.png

2)172659_h6hT_2931727.png

3.写上传java代码,当然网上也有,下面是我的代码。

package com.servlet;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.bean.Product;
import com.service.ProductService;


public class UploadServlet2 extends HttpServlet {
    Product p=new Product();
    ProductService ps=new ProductService();
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    this.doPost(request, response);
    }

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

        //响应中文乱码处理
                response.setContentType("text/html;charset=UTF-8");
                
                //创建工厂
                DiskFileItemFactory factory = new DiskFileItemFactory();
                //使用工厂对象作为参数创建一个ServletFileUplaod对象
                ServletFileUpload fileUpload = new ServletFileUpload(factory);
                //解决文件名中文乱码
                fileUpload.setHeaderEncoding("UTF-8");
                //设置上传的单个文件的大小上限:1024KB=1MB
                fileUpload.setFileSizeMax(1024*1024);
                try {
                    //使用fileUpload对象解析request请求体中的内容,得到FileItem链表
                    List<FileItem> list = fileUpload.parseRequest(request);
                    //遍历list得到每一个FileItem(也就是每一个表单项)
                    for(FileItem fileItem:list){
                        //如果当前表单项为普通文本字段
                        if(fileItem.isFormField()){//普通文本字段
                            //获取表单项的字段名称
                            String fieldName = fileItem.getFieldName();
                            if(fieldName.equals("id")){
                                p.setId(fileItem.getString("UTF-8"));
                            }
                            if(fieldName.equals("name")){
                                p.setName(fileItem.getString("UTF-8"));
                            }
                            if(fieldName.equals("price")){
                                String price1=(fileItem.getString("UTF-8"));
                                double price2=Double.parseDouble(price1);
                                p.setPrice(price2);
                            }
                            if(fieldName.equals("category")){
                                p.setCategory(fileItem.getString("UTF-8"));
                            }
                            if(fieldName.equals("pnum")){
                                int pnum= Integer.parseInt(fileItem.getString("UTF-8"));
                                p.setPnum(pnum);    
                            }
                            if(fieldName.equals("description")){
                                p.setDescription(fileItem.getString("UTF-8"));
                            }
                            
                        }else{//上传文件字段
                            //获取文件名
                            String name = fileItem.getName();
                            //如果名字为空,就是没有指定上传文件
                            if(name==null || name.isEmpty()){
                                continue;
                            }
                            //获取真实的文件路径,其实就是服务器上的一个目录,这个目录必须存在
                            String savepath = "D:/pic";
                            //为了保证上传的文件名是唯一的,可以使用UUID
                            String uuid = UUID.randomUUID().toString();
                            //重新构建的文件名为:uuid_原始文件名
                            String filename = uuid+"_"+name;
                            
                            
                            
                            //通过文件上传路径和文件名创建File对象
                            File file = new File(savepath, filename);
                            //将内容写到文件中去,上传完成
                            fileItem.write(file);
                            p.setImgurl(filename);
                            //给客户端输出提示
                            response.getWriter().print("上传文件名:"+name+"<br>");
                            response.getWriter().print("上传文件大小:"+fileItem.getSize()+"<br>");
                            response.getWriter().print("上传文件类型:"+fileItem.getContentType());
                        
                        
                        
                        }
                    }
                    ps.editId(p);
                    response.getWriter().print("商品信息修改成功......");
                    response.setHeader("Refresh", "1;url=/T1/admin/shoppingA.jsp");
                } catch (Exception e) {
                    //判断异常的类型
                    if(e instanceof FileUploadBase.FileSizeLimitExceededException){
                        //将错误信息存放到request域中
                        request.setAttribute("msg", "上传失败,文件大小超过1MB");
                        //请求转发到upload.jsp
                        request.getRequestDispatcher("/upload.jsp").forward(request, response);
                        return;
                    }
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }                                  
    }

}
注意:其中174452_Unbd_2931727.png

4.显示图片写法(上传图片自己写)。

175612_A9ZU_2931727.png

转载于:https://my.oschina.net/java1web/blog/831314

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值