背景:
在做Excel导入时,把上传的文件(formdata)使用transferTo方法存储到相关目录后,第二次再次formdata上传到fastdfs后出现了如标题所示的错误
原因:是我因为我使用transferTo的时候把multipart类型的文件转化成了File,而使用Fsatdfs方法进行上传的时候需要的文件类型是multipart,所以,我们只需要转化一下就好啦
以下是我的转化方法
public static FileItem createFileItem(File file) {
String filePath = file.getPath();
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = file.getName();
textFieldName = FileUtil.mainName(file);
System.out.println("textFieldName = " + textFieldName);
int num = filePath.lastIndexOf(".");
String extFile = filePath.substring(num);
System.out.println("extFile = " + extFile);
String contentType = getContentType(new File(filePath));// image/jpeg
System.out.println("contentType = " + contentType);
FileItem item = factory.createItem("fileData", contentType, false, textFieldName + extFile);
File newfile = new File(filePath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(newfile);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
/**
* 该方式支持本地文件,也支持http/httptps远程文件
*/
public static String getContentType(File file) {
String contentType = null;
try {
contentType = new MimetypesFileTypeMap().getContentType(file);
} catch (Exception e) {
e.printStackTrace();
}
return contentType;
}