java大文件上传插件(java附件上传功能实现)

   日期:2022-02-17     文章发布:文章发布    网络转载:生活号    
核心提示:1、问题在项目开发过程中,遇到需要将页面上选择的文件上传至FTP服务器,遇到一些坑,比如上传文件中文名乱码,上传时指定上传目录不能自动创建等问题。 2、FTP上传文件工具类 publicclassFtpUtil{ privateStringhostname="xxx"; privateIntegerport=21; privateStringusername="xxx"; privateStrin...
移动站源标题:http://mip.818114.com/news/item-161009.html

1、问题
在项目开发过程中,遇到需要将页面上选择的文件上传至FTP服务器,遇到一些坑,比如上传文件中文名乱码,上传时指定上传目录不能自动创建等问题。

2、FTP上传文件工具类

public class FtpUtil {
    private String hostname = "xxx";
    private Integer port = 21 ;
    private String username = "xxx";
    private String password = "xxx";
    private FTPClient client = null;

    public String initialize() throws Exception{
        client = new FTPClient();
        client.setControlEncoding("utf-8");
        client.connect(hostname, port);
        client.login(username, password);
        int replyCode = client.getReplyCode();
        if(!FTPReply.isPositiveCompletion(replyCode))
            return "Connect ftp failed";

        return "success";
    }

    public String uploadFile(String storePath, String fileName, String uploadFile) throws Exception {
        InputStream stream = new FileInputStream(new File(uploadFile));
        client.setFileType(client.BINARY_FILE_TYPE);
        this.prepareStorePath(client, storePath);
        client.sendCommand("OPTS UTF8", "ON");
        client.storeFile(fileName, stream);
        if (client.storeFile(fileName, stream))
            return "Upload file success";

        return "Upload file failed";
    }

    private void prepareStorePath(FTPClient client, String storePath) throws Exception{
        String[] split = storePath.split("\\\\");

        for (String str : split) {
            if (StringUtils.isBlank(str))
                continue;

            if (!client.changeWorkingDirectory(str)) {
                client.makeDirectory(str);
                client.changeWorkingDirectory(str);
            }
        }
    }
}

3、Application.java测试上传

public class Application {
    public static void main(String[] args) throws Exception {
        FtpUtil ftp = new FtpUtil();
        ftp.initialize();
        ftp.uploadFile("uploads", "W3School离线手册2017.chm", "F:\\ToolFile\\W3School离线手册2017.chm");
    }
}

4、文件名中文乱码解决办法

client.sendCommand("OPTS UTF8", "ON");

5、指定文件存储目录不能创建解决办法

private void prepareStorePath(FTPClient client, String storePath) throws Exception{
    String[] split = storePath.split("\\\\");

    for (String str : split) {
        if (StringUtils.isBlank(str))
            continue;

        if (!client.changeWorkingDirectory(str)) {
            client.makeDirectory(str);
            client.changeWorkingDirectory(str);
        }
    }
}

路漫漫其修远兮,吾将上下而求索

译文:在追寻真理方面,前方的道路还很漫长,但我将百折不挠,不遗余力地去追求和探索。

免责声明:本网部分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性,如有侵权请通知我们删除!(留言删除
 
 
更多>同类行业

同类新闻
最新资讯
最新发布
最受欢迎
网站首页  |  黄页  |  联系方式  |  信息  |  版权隐私  |  网站地图  |  API推送  |  网站留言  |  RSS订阅  |  违规举报  |  京ICP备2000095号