上传文件的名称和格式都已经在数据库表中规定好了,我只用在根据数据库表读取相关信息,然后限制上传文件的类型就好了,但是要求可以重复上传,并且第二次上传的文件能够替换上一次上传的文件。 但是在我进行重复上传的时候不知道为第二次文件上传内容能够覆盖前一次的,但是上传的文件会占的内存会越来越大。下面是我的部分代码:
String saveFilaName = getSaveFileName(fileName, request);
String filePath = getSaveFilePath(fileName, request);
File file = new File(filePath,saveFilaName);
// if (file.exists()){
// file.delete();
// }
file.deleteOnExit();
BufferedOutputStream bout = null;
FileOutputStream fout = null;
int blean = fileBytes.length;
try{
file.createNewFile();
fout = new FileOutputStream(file,true);
bout = new BufferedOutputStream(fout);
if (blean>1) {//修复上传 docx、xlsx 文件损坏问题
byte[] tmps = new byte[2];
tmps[0]=fileBytes[blean-2];
tmps[1]=fileBytes[blean-1];
if (Arrays.equals(tmps, HttpConstances.CRLF) ) {
bout.write(fileBytes,0,blean-2);
}else{
bout.write(fileBytes,0,blean);
}
}else{
bout.write(fileBytes,0,blean);
}
bout.flush();
}catch (Exception e) {
throw e;
}finally{
if(fout!=null){
fout.close();
}
if(bout!=null){
bout.close();
}
}
在上面的注释掉的代码,本来是可以删除文件的,但是如果输出流有问题,会导致现在的没法写进去,又将以前删除了, 所以考虑有没有更好的替换方法,或者思路。初次提问, 有啥不太清楚的地方大家多多原谅,麻烦了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.