公司数据迁移,有些附件不能直接导入新系统,然后附件需要从原系统下载到本地再上传到新系统。系统平台是jira,下面是批量上传的代码,采用curl方式,其中需要获取本地文件路径:
public static ArrayList<String> getFiles(String path) {ArrayList<String> files = new ArrayList<>();File file = new File(path);if (file.exists() && file.isDirectory() && file.canRead()) {File[] tempList = file.listFiles();for (int i = 0; i < tempList.length; i++) {if (tempList[i].isFile()) {files.add(tempList[i].toString());}}return files;}return null;}
这时,出现了一个问题。文件名包含中文。调试时发现获取的文件名出现乱码。
看了很多文章说需要转码,一一尝试没什么用,这时候获取本地编码方式发现出现了一个很奇怪的编码:Cp1252,最后终于找到问题所在,是eclipse 默认编码的问题(别问我为什么不用 IDEA,公司不给用啊!),解决方式如图:看了很多需要转码的文章,一篇一篇的试也没用。这个时候我在获取本地编码方法的时候发现了一个很奇怪的代码:Cp1252。终于发现问题了,是eclipse的默认编码(别问我为什么不用IDEA,公司不会用!),解决方案如图:
Window & # 8211& gt偏好–& gt
如果编码格式改为UTF-8,当程序再次运行时,将不会出现乱码文件名。
批量上传:
public static String execCurl(String issueKey, String file) {HashMap<String, String> info = GetPropertiesUtil.getInfo();String user = info.get("user");String password = info.get("password");String do***in = info.get("do***in");String[] cmds = { "curl", "-D-", "-u", user + ":" + password, "-X", "POST", "-H", "X-Atlassian-Token: no-check","-F", "file=@" + file, do***in + issueKey + "/attachments" };ProcessBuilder process = new ProcessBuilder(cmds);Process p;try {p = process.start();BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));StringBuilder builder = new StringBuilder();String line = null;while ((line = reader.readLine()) != null) {builder.append(line);builder.append(System.getProperty("line.separator"));}return builder.toString();} catch (IOException e) {System.out.print("error");e.printStackTrace();}return null;}
注意:curl命令应该存储在一个字符串数组中。
本文来自牛奶煮萝莉投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/654720.html