/// <summary> /// Fixed: /// </summary> public static string MultiUpload(System.Web.HttpPostedFileBase[] files, long id) { var controlId = Forms.ControlId(); var ss = new ItemModel(id).GetSite(initSiteSettings: true).SiteSettings; var column = ss.GetColumn(Forms.Data("ColumnName")); var attachments = Forms.Data("AttachmentsData").Deserialize <Attachments>(); var invalid = BinaryValidators.OnUploading(column, attachments, files); switch (invalid) { case Error.Types.OverLimitQuantity: return(Messages.ResponseOverLimitQuantity( column.LimitQuantity.ToString()).ToJson()); case Error.Types.OverLimitSize: return(Messages.ResponseOverLimitSize( column.LimitSize.ToString()).ToJson()); case Error.Types.OverTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( column.TotalLimitSize.ToString()).ToJson()); case Error.Types.OverTenantStorageSize: return(Messages.ResponseOverTenantStorageSize( Contract.TenantStorageSize().ToString()).ToJson()); case Error.Types.None: break; default: return(invalid.MessageJson()); } files.ForEach(file => attachments.Add(new Attachment() { Guid = file.WriteToTemp(), Name = file.FileName.Split('\\').Last(), Size = file.ContentLength, Extention = file.Extension(), ContentType = file.ContentType, Added = true, Deleted = false })); var hb = new HtmlBuilder(); return(new ResponseCollection() .ReplaceAll($"#{controlId}Field", new HtmlBuilder() .Field( ss: ss, column: column, value: attachments.ToJson(), columnPermissionType: column.ColumnPermissionType())) .SetData("#" + controlId) .ToJson()); }
private static ErrorData OnAttaching( Context context, SiteSettings ss, IssueModel issueModel) { foreach (var column in ss.Columns.Where(o => o.TypeCs == "Attachments")) { if (issueModel.Attachments_Updated( columnName: column.Name, context: context, column: column)) { var invalid = BinaryValidators.OnUploading( context: context, ss: ss, attachmentsHash: issueModel.AttachmentsHash); switch (invalid) { case Error.Types.OverLimitQuantity: return(new ErrorData( type: Error.Types.OverLimitQuantity, data: column.LimitQuantity.ToInt().ToString())); case Error.Types.OverLimitSize: return(new ErrorData( type: Error.Types.OverLimitSize, data: column.LimitSize.ToInt().ToString())); case Error.Types.OverTotalLimitSize: return(new ErrorData( type: Error.Types.OverTotalLimitSize, data: column.TotalLimitSize.ToInt().ToString())); case Error.Types.OverLocalFolderLimitSize: return(new ErrorData( type: Error.Types.OverLocalFolderLimitSize, data: column.LocalFolderLimitSize.ToInt().ToString())); case Error.Types.OverLocalFolderTotalLimitSize: return(new ErrorData( type: Error.Types.OverLocalFolderTotalLimitSize, data: column.LocalFolderTotalLimitSize.ToInt().ToString())); case Error.Types.OverTenantStorageSize: return(new ErrorData( type: Error.Types.OverTenantStorageSize, data: context.ContractSettings.StorageSize.ToInt().ToString())); } } } return(new ErrorData(type: Error.Types.None)); }
/// <summary> /// Fixed: /// </summary> public static string MultiUpload(Context context, long id) { var controlId = context.Forms.ControlId(); var ss = new ItemModel( context: context, referenceId: id).GetSite( context: context, initSiteSettings: true) .SiteSettings; var column = ss.GetColumn( context: context, columnName: context.Forms.Data("ColumnName")); var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>(); var invalid = BinaryValidators.OnUploading( context: context, column: column, attachments: attachments); switch (invalid) { case Error.Types.OverLimitQuantity: return(Messages.ResponseOverLimitQuantity( context: context, data: column.LimitQuantity.ToString()).ToJson()); case Error.Types.OverLimitSize: return(Messages.ResponseOverLimitSize( context: context, data: column.LimitSize.ToString()).ToJson()); case Error.Types.OverTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( context: context, data: column.TotalLimitSize.ToString()).ToJson()); case Error.Types.OverTenantStorageSize: return(Messages.ResponseOverTenantStorageSize( context: context, data: context.ContractSettings.StorageSize.ToString()).ToJson()); case Error.Types.None: break; default: return(invalid.MessageJson(context: context)); } context.PostedFiles.ForEach(file => attachments.Add(new Attachment() { Guid = file.Guid, Name = file.FileName.Split('\\').Last(), Size = file.Size, Extention = file.Extension, ContentType = file.ContentType, Added = true, Deleted = false })); var hb = new HtmlBuilder(); var fieldId = controlId + "Field"; return(new ResponseCollection() .ReplaceAll("#" + fieldId, new HtmlBuilder() .FieldAttachments( context: context, fieldId: fieldId, controlId: controlId, columnName: column.ColumnName, fieldCss: column.FieldCss, fieldDescription: column.Description, controlCss: column.ControlCss, labelText: column.LabelText, value: attachments.ToJson(), placeholder: column.LabelText, readOnly: column.ColumnPermissionType(context: context) != Permissions.ColumnPermissionTypes.Update)) .SetData("#" + controlId) .ToJson()); }
/// <summary> /// Fixed: /// </summary> public static string UploadFile( Context context, long id, System.Net.Http.Headers.ContentRangeHeaderValue contentRange) { var itemModel = new ItemModel(context, id); var ss = itemModel.GetSite(context, initSiteSettings: true).SiteSettings; var column = ss.GetColumn(context, TrimIdSuffix(context.Forms.Get("ColumnName"))); var attachments = context.Forms.Get("AttachmentsData").Deserialize <Attachments>(); var fileHash = context.Forms.Get("FileHash"); contentRange = contentRange ?? context?.PostedFiles?.FirstOrDefault()?.ContentRange; { var invalid = HasPermission(context, ss, itemModel); switch (invalid.Type) { case Error.Types.None: break; default: return(invalid.MessageJson(context)); } } { var invalid = BinaryValidators.OnUploading(context, column, attachments, context.PostedFiles, new[] { contentRange }); switch (invalid) { case Error.Types.OverLimitQuantity: return(Messages.ResponseOverLimitQuantity( context: context, data: column.LimitQuantity.ToString()).ToJson()); case Error.Types.OverLimitSize: return(Messages.ResponseOverLimitSize( context: context, data: column.LimitSize.ToString()).ToJson()); case Error.Types.OverTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( context: context, data: column.TotalLimitSize.ToString()).ToJson()); case Error.Types.OverLocalFolderLimitSize: return(Messages.ResponseOverLimitSize( context: context, data: column.LocalFolderLimitSize.ToString()).ToJson()); case Error.Types.OverLocalFolderTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( context: context, data: column.LocalFolderTotalLimitSize.ToString()).ToJson()); case Error.Types.OverTenantStorageSize: return(Messages.ResponseOverTenantStorageSize( context: context, data: context.ContractSettings.StorageSize.ToString()).ToJson()); case Error.Types.None: break; default: return(invalid.MessageJson(context)); } } var controlId = context.Forms.Get("ControlId"); var fileUuid = context.Forms.Get("uuid")?.Split(','); var fileUuids = context.Forms.Get("Uuids")?.Split(','); var fileNames = context.Forms.Get("fileNames")?.Deserialize <string[]>(); var fileSizes = context.Forms.Get("fileSizes")?.Deserialize <string[]>(); var fileTypes = context.Forms.Get("fileTypes")?.Deserialize <string[]>(); var resultFileNames = new List <KeyValuePair <PostedFile, System.IO.FileInfo> >(); for (int filesIndex = 0; filesIndex < context.PostedFiles.Count; ++filesIndex) { var file = context.PostedFiles[filesIndex]; var saveFile = GetTempFileInfo(fileUuid[filesIndex], file.FileName); Save(file, saveFile); resultFileNames.Add( new KeyValuePair <PostedFile, System.IO.FileInfo>( file, saveFile)); } { var invalid = ValidateFileHash(resultFileNames[0].Value, contentRange, fileHash); if (invalid != Error.Types.None) { return(invalid.MessageJson(context)); } } return(CreateResult(resultFileNames, CreateResponseJson( context, fileUuids, fileNames, fileSizes, fileTypes, ss, column, controlId, attachments, contentRange))); }
/// <summary> /// Fixed: /// </summary> public static string MultiUpload(IContext context, long id) { var controlId = context.Forms.ControlId(); var ss = new ItemModel( context: context, referenceId: id).GetSite( context: context, initSiteSettings: true) .SiteSettings; var column = ss.GetColumn( context: context, columnName: context.Forms.Data("ColumnName")); var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>(); var invalid = BinaryValidators.OnUploading( context: context, column: column, attachments: attachments); switch (invalid) { case Error.Types.OverLimitQuantity: return(Messages.ResponseOverLimitQuantity( context: context, data: column.LimitQuantity.ToString()).ToJson()); case Error.Types.OverLimitSize: return(Messages.ResponseOverLimitSize( context: context, data: column.LimitSize.ToString()).ToJson()); case Error.Types.OverTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( context: context, data: column.TotalLimitSize.ToString()).ToJson()); case Error.Types.OverTenantStorageSize: return(Messages.ResponseOverTenantStorageSize( context: context, data: context.ContractSettings.StorageSize.ToString()).ToJson()); case Error.Types.None: break; default: return(invalid.MessageJson(context: context)); } context.PostedFiles.ForEach(file => attachments.Add(new Attachment() { Guid = file.Guid, Name = file.FileName.Split(System.IO.Path.DirectorySeparatorChar).Last(), Size = file.Size, Extention = file.Extension, ContentType = file.ContentType, Added = true, Deleted = false })); var hb = new HtmlBuilder(); return(new ResponseCollection() .ReplaceAll($"#{controlId}Field", new HtmlBuilder() .Field( context: context, ss: ss, column: column, value: attachments.ToJson(), columnPermissionType: column .ColumnPermissionType(context: context))) .SetData("#" + controlId) .ToJson()); }