private string CopyTemporaryFiles(ISaveRequestHandler handler, UploadedFile[] oldFileList, UploadedFile[] newFileList, FilesToDelete filesToDelete) { foreach (var file in newFileList) { var filename = file.Filename.Trim(); if (oldFileList.Any(x => String.Compare(x.Filename.Trim(), filename, StringComparison.OrdinalIgnoreCase) == 0)) continue; if (!filename.ToLowerInvariant().StartsWith("temporary/")) throw new InvalidOperationException("For security reasons, only temporary files can be used in uploads!"); var uploadHelper = new UploadHelper((subFolder.IsEmptyOrNull() ? "" : (subFolder + "/")) + fileNameFormat); var copyResult = uploadHelper.CopyTemporaryFile(filename, ((IIdRow)handler.Row).IdField[handler.Row].Value, filesToDelete); if (subFolder != null && !this.storeSubFolderInDB) copyResult.DbFileName = copyResult.DbFileName.Substring(subFolder.Length + 1); file.Filename = copyResult.DbFileName; } return JSON.Stringify(newFileList); }
private string CopyTemporaryFiles(ISaveRequestHandler handler, UploadedFile[] oldFileList, UploadedFile[] newFileList, FilesToDelete filesToDelete) { foreach (var file in newFileList) { var filename = file.Filename.Trim(); if (oldFileList.Any(x => String.Compare(x.Filename.Trim(), filename, StringComparison.OrdinalIgnoreCase) == 0)) continue; if (!filename.ToLowerInvariant().StartsWith("temporary/")) throw new InvalidOperationException("For security reasons, only temporary files can be used in uploads!"); ImageUploadBehavior.CheckUploadedImageAndCreateThumbs(attr, ref filename); var idField = (Field)(((IIdRow)handler.Row).IdField); var copyResult = uploadHelper.CopyTemporaryFile(filename, idField.AsObject(handler.Row), filesToDelete, s => ImageUploadBehavior.ProcessReplaceFields(s, this.replaceFields, handler)); if (!attr.SubFolder.IsEmptyOrNull()) copyResult.DbFileName = copyResult.DbFileName.Substring(attr.SubFolder.Length + 1); file.Filename = copyResult.DbFileName; } return JSON.Stringify(newFileList); }