Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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." );
                    }
                }
            }
        }