/// <summary> /// Call this during ModifyData. This returns the file collection ID of the existing or just-inserted file collection. /// This will return an ID even if there are 0 files in the collection (in other words, no file). No file should always be /// represented by a non-null file collection ID which happens to have 0 files in it. Null file collection IDs are not supported. /// </summary> public int ModifyData() { if (fileCollectionId == null) { fileCollectionId = BlobFileOps.SystemProvider.InsertFileCollection(); } var rsFile = uploadedFile.GetPostBackValue(AppRequestState.Instance.EwfPageRequestState.PostBackValues); if (rsFile != null) { BlobFileOps.SystemProvider.DeleteFilesLinkedToFileCollection(fileCollectionId.Value); BlobFileOps.SystemProvider.InsertFile(fileCollectionId.Value, rsFile.FileName, rsFile.Contents, BlobFileOps.GetContentTypeForPostedFile(rsFile)); } return(fileCollectionId.Value); }
/// <summary> /// Uploaded file cannot be null. But if uploadedFile.HasFile is false, this will be a no-op. /// Pass null for acceptableFileExtensions if there is no restriction on file extension. /// PerformAdditionalImageValidation cannot be null but may be an empty delegate. /// </summary> public static void ValidateUploadedFile( Validator validator, EwfFileUpload uploadedFile, string[] acceptableFileExtensions, Action <Validator, System.Drawing.Image> performAdditionalImageValidation, bool mustBeRenderableImage) { var file = uploadedFile.GetPostBackValue(AppRequestState.Instance.EwfPageRequestState.PostBackValues); if (file == null) { return; } // Perform generic file validation. if (acceptableFileExtensions != null && !FileExtensions.MatchesAGivenExtension(file.FileName, acceptableFileExtensions)) { validator.NoteErrorAndAddMessage(Translation.UnacceptableFileExtension + " " + acceptableFileExtensions.GetCommaDelimitedStringFromCollection()); // Don't bother trying to see if it's an image and parse the image. The file extension message be more detailed than the messages those errors produce. return; } // Perform image-specific validation if necessary. if (mustBeRenderableImage) { // Make sure it is an image according to its content type. if (!ContentTypes.IsImageType(GetContentTypeForPostedFile(file))) { validator.NoteErrorAndAddMessage("Please upload a valid image file."); } else { // Make sure it is an image type that we understand. Also perform optional custom validation. try { using (var stream = new MemoryStream(file.Contents)) { var image = System.Drawing.Image.FromStream(stream); performAdditionalImageValidation(validator, image); } } catch (ArgumentException) { // If we end up in this catch block, it means that System.Drawing.Image does not understand our image. Since we already know that our content type // is image at this point, this usually means that the file is some sort of unsupported image format, like NEF. validator.NoteErrorAndAddMessage("The uploaded image file is in an unsupported format."); } } } }
/// <summary> /// Uploaded file cannot be null. But if uploadedFile.HasFile is false, this will be a no-op. /// Pass null for acceptableFileExtensions if there is no restriction on file extension. /// PerformAdditionalImageValidation cannot be null but may be an empty delegate. /// </summary> public static void ValidateUploadedFile( Validator validator, EwfFileUpload uploadedFile, string[] acceptableFileExtensions, Action<Validator, System.Drawing.Image> performAdditionalImageValidation, bool mustBeRenderableImage) { var file = uploadedFile.GetPostBackValue( AppRequestState.Instance.EwfPageRequestState.PostBackValues ); if( file == null ) return; // Perform generic file validation. if( acceptableFileExtensions != null && !FileExtensions.MatchesAGivenExtension( file.FileName, acceptableFileExtensions ) ) { validator.NoteErrorAndAddMessage( Translation.UnacceptableFileExtension + " " + acceptableFileExtensions.GetCommaDelimitedStringFromCollection() ); // Don't bother trying to see if it's an image and parse the image. The file extension message be more detailed than the messages those errors produce. return; } // Perform image-specific validation if necessary. if( mustBeRenderableImage ) { // Make sure it is an image according to its content type. if( !ContentTypes.IsImageType( GetContentTypeForPostedFile( file ) ) ) validator.NoteErrorAndAddMessage( "Please upload a valid image file." ); else { // Make sure it is an image type that we understand. Also perform optional custom validation. try { using( var stream = new MemoryStream( file.Contents ) ) { var image = System.Drawing.Image.FromStream( stream ); performAdditionalImageValidation( validator, image ); } } catch( ArgumentException ) { // If we end up in this catch block, it means that System.Drawing.Image does not understand our image. Since we already know that our content type // is image at this point, this usually means that the file is some sort of unsupported image format, like NEF. validator.NoteErrorAndAddMessage( "The uploaded image file is in an unsupported format." ); } } } }