我正在使用COS multipart处理servlet上的文件上载。java servlet cos multipart:保存inpustream用于以后的存储
在处理部件时,我需要使用额外的发布字段(ParamPart)重命名文件,在这种情况下,'artikelcode'需要预先添加到文件名中。
因此,不需要直接将FilePart写入磁盘,我需要将输入流保存在内存中。
这是我的代码至今:
MultipartParser multipartParser = new MultipartParser(request, 100000000);
String artikelcode = null;
String filename = null;
InputStream in = null;
while ((part = multipartParser.readNextPart()) != null) {
if (part.isFile()) {
FilePart filePart = (FilePart) part;
filename = filePart.getFileName();
//long fileSize = filePart.writeTo(new File(fileSavePath));
if (filename != null) in = filePart.getInputStream();
}
if (part.isParam()) {
ParamPart paramPart = (ParamPart) part;
if (paramPart.getName().equals("artikelcode")) artikelcode = paramPart.getStringValue();
}
}
if (in != null)
{
String fileSavePath = "c:\\upload\\"+artikelcode+"_"+filename;
File file = new File(fileSavePath);
OutputStream out = new FileOutputStream(file);
IOUtils.copy(in, out);
out.close();
}
当文件被保存在磁盘上,它是空的!
感谢您的帮助!
好吧我遵循你的建议,但重命名不起作用,这是我的代码: File newdest = new File(“c:\\ upload \\”+ artikelcode +“_”+ filename); file.renameTo(newdest); – Sobek
好nvm,我不得不给文件实例一个临时名称,而不是只有目录路径:) – Sobek