老师,这个方法我觉得设计的不合理! uploaded不应该默认为true. 成功则赋值true才合理.

来源:8-7 后台商品图片的springmvc上传与富文本上传ftp服务器功能开发2

狐狸别跑

2017-05-27

  

  private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {

        boolean uploaded = true;

        FileInputStream fis = null;

        //连接FTP服务器

        if(connectServer(this.ip,this.port,this.user,this.pwd)){

            try {

                ftpClient.changeWorkingDirectory(remotePath);

                ftpClient.setBufferSize(1024);

                ftpClient.setControlEncoding("UTF-8");

                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

                ftpClient.enterLocalPassiveMode();

                for(File fileItem : fileList){

                    fis = new FileInputStream(fileItem);

                    ftpClient.storeFile(fileItem.getName(),fis);

                }


            } catch (IOException e) {

                logger.error("上传文件异常",e);

                uploaded = false;

                e.printStackTrace();

            } finally {

                fis.close();

                ftpClient.disconnect();

            }

        }

        return uploaded;

    }


写回答

2回答

Geely

2017-05-27

hi 同学,我认为你说的非常对~~哈哈给予赞美~~~是的~是这样的,这块是有瑕疵滴,希望在你的项目代码里改掉哟~~

另外我再给你提一个场景~~嘻嘻,上传多个文件的时候,在返回值上要处理上A成功,B失败这样,才是最完美的哟。

0
3
Geely
回复
qq_白色恋人_1
这个要看逻辑如何来定,是否允许一次性上传多个文件。还是上传多个,例如第一个成功,也算成功,还是给予前端提示,哪个上传成功,需要再次封装。
2017-09-17
共3条回复

Blegend

2017-05-27

同学,这个地方我觉得确实有点小瑕疵,但是我觉得一开始设置成true到是没有问题,因为只要执行到return肯定是成功了的,这种情况只需要错误的时候设置成false就行了,否则如果你要是设置成false那么每次成功都要设置成true对于服务器来说不是很麻烦吗?毕竟没有意外总是成功的。----------但是问题来了,我说的瑕疵应该是return应该放到finally里面,不然的话catch到异常设置成false也没有return,,,我觉得这里有点小问题,老师当时应该疏忽了。

0
1
狐狸别跑
问题是如果FTP连接的时候报错。即if进不去 return也会返回的。
2017-05-29
共1条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程