Sample code for 30+ languages & platforms
SQL Server

MIME Content-Disposition Header Field

See more MIME Examples

Explains the Content-Disposition header field and the properties used for setting or updating.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- The Content-Disposition header field provides a suggestion to the receiver for how the content is to be processed.
    -- The standard dispositions are "inline" and "attachment".  

    -- A disposition of "attachment" indicates the content is something to be saved to a file and not processed (such as rendering for viewing inline).
    -- A disposition of "inline" indicates the content should be processed (displayed) inline with the other parts of the MIME message.

    -- For example, an email client could handle a JPG image based on the disposition.  If the disposition is "attachment",
    -- the email client (such as Thunderbird, GMail, or Outlook) might simply list the JPG image as one of the email's attachments,
    -- but won't display the JPG image.  If the disposition is "inline", the email client might display the JPG image, but not list
    -- it as an attachment.

    -- The Content-Disposition header field can also include a "filename" attribute.  This is the suggested default filename if the content
    -- is to be saved to a file.

    DECLARE @mime int
    EXEC @hr = sp_OACreate 'Chilkat.Mime', @mime OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- The Content-Disposition header field can be set or modified in two ways.
    -- 1) By setting the Disposition and Filename properties.

    -- 2) By setting the entire contents of the Content-Disposition header with the SetHeaderField method.
    --    Setting the Content-Disposition header automatically updates the Disposition and Filename properties.

    -- For example:
    EXEC sp_OASetProperty @mime, 'Disposition', 'attachment'
    EXEC sp_OASetProperty @mime, 'Filename', 'ghost.jpg'

    -- The Content-Disposition header field contains this:
    --     Content-Disposition: attachment; filename="ghost.jpg"
    EXEC sp_OAMethod @mime, 'GetEntireHead', @sTmp0 OUT
    PRINT @sTmp0

    PRINT '-'

    -- If we set the entire header field..
    EXEC sp_OAMethod @mime, 'SetHeaderField', @success OUT, 'Content-Disposition', 'attachment; filename="zombie.jpg"'
    -- The Content-Disposition header field now contains this:
    --     Content-Disposition: attachment; filename="zombie.jpg"
    EXEC sp_OAMethod @mime, 'GetEntireHead', @sTmp0 OUT
    PRINT @sTmp0

    PRINT '-'

    -- Notice how the Filename property has been updated

    EXEC sp_OAGetProperty @mime, 'Filename', @sTmp0 OUT
    PRINT 'Filename property: ' + @sTmp0

    PRINT '-'

    -- To change a particular attribute value, set the property.
    EXEC sp_OASetProperty @mime, 'Filename', 'skeleton.jpg'
    EXEC sp_OAMethod @mime, 'GetEntireHead', @sTmp0 OUT
    PRINT @sTmp0

    PRINT '-'

    -- To remove the filename from the Content-Disposition header,
    -- set the property to an empty string.
    EXEC sp_OASetProperty @mime, 'Filename', ''
    EXEC sp_OAMethod @mime, 'GetEntireHead', @sTmp0 OUT
    PRINT @sTmp0

    PRINT '-'

    EXEC @hr = sp_OADestroy @mime


END
GO