public PhysicalFileFromTempCollection Save() { PhysicalFileFromTempCollection files = FileManager.Save(this.UserID, this); return(files); }
public static PhysicalFileFromTempCollection Save(int operatorID, TempUploadFileCollection tempUploadFiles) { if (operatorID <= 0) { Context.ThrowError(new NotLoginError()); return(new PhysicalFileFromTempCollection()); } if (tempUploadFiles == null || tempUploadFiles.Count == 0) { return(new PhysicalFileFromTempCollection()); } //循环这些临时文件,分离出那些是需要保存的哪些是需要删除的 //判断标准是:FileID相同的TempUploadFile,只保留第一份,并移动到最终实际位置,剩余的直接从临时文件夹删除 List <int> allTempUploadFileIds = new List <int>(); List <int> saveTempUploadFileIds = new List <int>(); List <int> deleteTempUploadFileIds = new List <int>(); List <string> deleteTempUploadFileNames = new List <string>(); List <string> distinctFileIds = new List <string>(); foreach (TempUploadFile tempUploadFile in tempUploadFiles) { allTempUploadFileIds.Add(tempUploadFile.TempUploadFileID); if (distinctFileIds.Contains(tempUploadFile.FileID)) { deleteTempUploadFileIds.Add(tempUploadFile.TempUploadFileID); deleteTempUploadFileNames.Add(tempUploadFile.ServerFileName); } else { saveTempUploadFileIds.Add(tempUploadFile.TempUploadFileID); } distinctFileIds.Add(tempUploadFile.FileID); } PhysicalFileFromTempCollection files = FileDao.Instance.SaveFiles(operatorID, allTempUploadFileIds, saveTempUploadFileIds, deleteTempUploadFileIds); //对于保存成功的临时文件,将文件从临时文件夹移动到最终文件夹 foreach (PhysicalFileFromTemp file in files) { string tempUploadFilePath = Globals.GetPath(SystemDirecotry.Temp_Upload, file.TempUploadServerFileName); string targetFilePath = Globals.GetPath(SystemDirecotry.Upload_File, file.ServerFilePath); string targetDirectory = Path.GetDirectoryName(targetFilePath); try { if (File.Exists(targetFilePath)) { File.Delete(tempUploadFilePath); } else { if (Directory.Exists(targetDirectory) == false) { Directory.CreateDirectory(targetDirectory); } File.Move(tempUploadFilePath, targetFilePath); } } catch { } } //对于筛选出来重复的临时文件,直接将他们从临时文件夹删除 foreach (string filename in deleteTempUploadFileNames) { string path = Globals.GetPath(SystemDirecotry.Temp_Upload, filename); try { File.Delete(path); } catch { } } return(files); }