maven配置的tomcat 文件上传办法

前言

使用maven的时候,不像直接用ide或者自己安装的tomcat一样比较容易找到虚拟路径或者把东西上传到实体路径,我在做些项目的时候本来是打算装想装nginx,但是我的虚拟机是Ubuntu的什么依赖都没有安装好,我尝试了一天时间去安装各种东西,首先nginx它又依赖gcc-g++, gcc-g++又依赖zlib,zlib又依赖ssl,我...最后还是放弃了....(在尝试自己做创智播客视频中的淘淘商城的项目)

解决办法

既然不能使用nginx来上传我的图片,那我只能按照原来的办法去解决了,但是使用maven构建的项目并不像普通项目一样容易找到项目部署的位置,找了挺长时间的,最后才发现是安装在下面这个目录:

String path = request.getSession().getServletContext().getRealPath("/") ;
//打印出来的结果是F:\taotao\workspace-template\template\taotao-manager\taotao-manager-web\src\main\webapp

由上可知图片上传的路径可表示为request.getSession.getServletContext().getRealPah("/") + "WEB-INF/uploadedImages/",由于在配置文件中配置了

 <mvc:resources location="/WEB-INF/uploadedImages/" mapping="/uploadedImages/**"></mvc:resources>//springmvc.xml中配置

那么图片的src为** http:localhost:8080/uploadedImages/**。

好吧,既然目录有了,其他事情就可以慢慢理顺了
先搭建ssm中的service层,这里我们要获得控制层传过来的MultipartFile类型的文件,这个类可以让你获得文件的类型,文件名称,文件inputstream,接口如下:

//此处我们还在在request中获得虚拟路径的文件目录地址
public interface PictureService {
    public Map uploadPicture(MultipartFile multipartFile,String path);
}

PictureServiceImpl中需要做的事情是获得文件File类,然后对文件重命名,再用FileUtils的copyFile把文件拷贝到部署好的服务器中

@Service
public class PictureServiceImpl implements PictureService {

    @Override
    public Map uploadPicture(MultipartFile multipartFile,String path) {
        Map resultMap = new HashMap<>();
        //上传的方式
        try {
            //1.命名文件
            String oldName = multipartFile.getOriginalFilename();
            String newName = IDUtils.genImageName();
            newName = newName + oldName.substring(oldName.lastIndexOf("."));
            InputStream inputStream = multipartFile.getInputStream();
            //2.把multipartFile转化为File
            
            //2.1 临时文件 xxx.png 或者 xxx.jpg等
            String temFile = "tem"+oldName.substring(oldName.lastIndexOf("."));
            //2.2 生成新文件
            File srcFile = new File(temFile); 
             //2.3  打开一个已存在文件的输出流  
             FileOutputStream fos = new FileOutputStream(srcFile);
                    //2.4  将输入流is写入文件输出流fos中  
                    int ch = 0;  
                    while((ch=inputStream.read()) != -1){  
                    fos.write(ch);  
                    }  
     
            //System.out.println(newName+"----"+temFile);
            //3. 上传文件
            FileUtils.copyFile(srcFile, new File(path,newName));
            fos.close();
            inputStream.close();
            resultMap.put("url", "uploadedImages/"+newName);
            resultMap.put("error", 0);
            return resultMap;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            resultMap.put("message", "上传失败!");
            resultMap.put("error", 1);
            return resultMap;
        }
    }
}


里面主要包含了:

  • 1.命名文件
  • 2.把multipartFile转化为File
  • 3.上传文件操作

Controller;里面需要配置路径给service 返回Map给前端影响

@Controller
public class PictureContrller {

    @Autowired
    private PictureService pictureService;

    @RequestMapping("/pic/upload")
    @ResponseBody
    public Map pictureUpload(MultipartFile uploadFile,HttpServletRequest request){
        String path = request.getSession().getServletContext().getRealPath("/") + "WEB-INF\\uploadedImages\\";
        System.out.println(path);
        return  pictureService.uploadPicture(uploadFile,path);
    }
    
}

上传成功后,可以在F:\taotao\workspace-template\template\taotao-manager\taotao-manager-web\src\main\webapp\WEB-INF\uploadedImages 下看到上传成功的图片

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 8,535评论 1 41
  • 有许多朋友问单位不给交保险该怎么办的问题,接下来看一个案例就明白了。 2005年9月9日,小张开始到某建筑公司工作...
    悟三分阅读 3,311评论 0 105
  • 白日上现当代文学时坐在靠后的窗边,看着初冬白茫茫的一片发着呆。想着《湖心亭看雪》中的“天与云与山与水,上下一白”的...
    许路蘼阅读 712评论 0 2
  • 工作好几年了,应该保持淡定,镇静,然后什么事尽量想周全,事情也应该提前想。
    树袋大熊kg阅读 69评论 0 0