I have an internal asp.net 2.0 web application where we display the contents
of various files using Response.ContentType and Response.WriteFile()
settings and it works great for .doc, .xls, etc. files. Now the users want
to be able to open them in their native programs (Microsoft Word, Excel,
etc.). I have done this with ActiveX before, but the company has moved to
Office 2007 and I'm not sure the same process will work for the new docx,
xlsx, etc. files. Can anyone give me some ideas on the best way to handle
this? All users have Microsoft Office. Thanks.
David
George Ter-Saakov - 24 Apr 2008 19:38 GMT
You should add Content-Disposition to the header.
Like this Content-Disposition: attachment; filename="file.pdf"
So in C# code it's Response.AddHeader("Content-Disposition", "attachment;
filename=\"file.pdf\"");
And then do Response.WriteFile
Browser will be forced (thanks to "attachment" word) to pop up a window
offering to save file or open it in application.
George.
>I have an internal asp.net 2.0 web application where we display the
>contents of various files using Response.ContentType and
[quoted text clipped - 6 lines]
>
> David
David C - 25 Apr 2008 17:44 GMT
George,
Thank you for that info. However, it still does not open in the native
program (Microsoft Word, Microsoft Excel, etc.). It opens it in the browser
where it cannot be edited.
David
> You should add Content-Disposition to the header.
> Like this Content-Disposition: attachment; filename="file.pdf"
[quoted text clipped - 19 lines]
>>
>> David
George Ter-Saakov - 25 Apr 2008 17:54 GMT
Show me the code.....
PS: There was a bug in IE 5.01 and it ignored the "attachment" .... But I
hope it's not the case here. Since we already have IE 7.
George.
> George,
> Thank you for that info. However, it still does not open in the native
[quoted text clipped - 25 lines]
>>>
>>> David
David C - 25 Apr 2008 17:58 GMT
Nevermind. The problem was that I did not need "\" before and after
filename as I am using VB. When I took them off, it appears to work fine.
Thanks.
David
> Show me the code.....
>
[quoted text clipped - 32 lines]
>>>>
>>>> David
David C - 25 Apr 2008 18:06 GMT
George,
I did find a problem. Office 2007 opens a document from a previous version
of Office with a different name (e.g. it adds [1] to the name). For example,
if I open test.doc on a machine with office 2007 it opens it as test[1].doc
in a temporary directory. When it opens a file like test.docx it opens the
original. Is there any way to handle this? Thanks.
David
> Show me the code.....
>
[quoted text clipped - 32 lines]
>>>>
>>>> David
George Ter-Saakov - 25 Apr 2008 18:44 GMT
Doubt that you can do anything here...
this is how Open/Save dialog works.....
If you choose "Save" then you can save it with the name you specified in
your "Content-Disposition" header.
If you choose "Open" IE will actually save the file into "TEMP" folder and
then open application (as if you double clicked on file). But if file with
that name already exists IE quietly appends [1] (or [2],...) to the name.
I do not know how to change that behavior andf most likely you can not....
George.
> George,
> I did find a problem. Office 2007 opens a document from a previous
[quoted text clipped - 41 lines]
>>>>>
>>>>> David
Fernando Rodriguez, MCP - 28 Apr 2008 22:44 GMT
I think if you set the content-disposition to inline and the content-type to
the proper mime type and then stream it down with Response.WriteFile or
BinaryWrite it will open automatically on it's application when you click
the link on a webpage.
As for using ActiveX, the process would be the same for any type of file
since you're just embedding the application on the webpage and letting it do
the rest.
>I have an internal asp.net 2.0 web application where we display the
>contents of various files using Response.ContentType and
[quoted text clipped - 6 lines]
>
> David