Client and Office from asp.net

  • Thread starter Thread starter David C
  • Start date Start date
D

David C

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
 
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.
 
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
 
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.
 
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
 
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
 
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.



David C said:
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
George Ter-Saakov said:
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.
 
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.
 
Back
Top