--- sfx2/inc/sfx2/docfile.hxx	2006-12-19 15:08:00.000000000 +0100
+++ sfx2/inc/sfx2/docfile.hxx	2007-03-28 16:22:21.000000000 +0200
@@ -303,6 +303,7 @@ public:
 	SAL_DLLPRIVATE ::rtl::OUString GetOutputStorageURL_Impl();
     SAL_DLLPRIVATE BOOL HasStorage_Impl() const;
 
+	SAL_DLLPRIVATE sal_Bool SupportsActiveStreaming_Impl( const rtl::OUString &rName ) const;
 	SAL_DLLPRIVATE sal_Bool BasedOnOriginalFile_Impl();
 	SAL_DLLPRIVATE void StorageBackup_Impl();
 	SAL_DLLPRIVATE ::rtl::OUString GetBackup_Impl();
--- sfx2/source/doc/docfile.cxx	2007-03-23 18:06:52.000000000 +0100
+++ sfx2/source/doc/docfile.cxx	2007-03-28 16:24:22.000000000 +0200
@@ -913,11 +913,31 @@ sal_Bool SfxMedium::TryStorage()
 }
 
 //------------------------------------------------------------------
+sal_Bool SfxMedium::SupportsActiveStreaming_Impl( const rtl::OUString &rName ) const
+{
+    if ( ::utl::LocalFileHelper::IsLocalFile( rName ) )
+        return sal_True;
+
+    ::ucbhelper::Content aTmpContent;
+    Reference< ::com::sun::star::ucb::XCommandEnvironment > xDummyEnv;
+    if ( ::ucbhelper::Content::create( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ), xDummyEnv, aTmpContent ) )
+    {
+        Any aAny = aTmpContent.getPropertyValue(
+                ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "SupportsActiveStreaming" )) );
+
+        sal_Bool bSupportsStreaming = sal_False;
+        return ( ( aAny >>= bSupportsStreaming ) && bSupportsStreaming );
+    }
+
+    return sal_False;
+}
+
+//------------------------------------------------------------------
 sal_Bool SfxMedium::BasedOnOriginalFile_Impl()
 {
 	return ( !pImp->pTempFile && !( aLogicName.Len() && pImp->m_bSalvageMode )
 	  && GetURLObject().GetMainURL( INetURLObject::NO_DECODE ).getLength()
-      && ::utl::LocalFileHelper::IsLocalFile( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ) )
+ 	  && SupportsActiveStreaming_Impl( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ) )
 	  && ::utl::UCBContentHelper::IsDocument( GetURLObject().GetMainURL( INetURLObject::NO_DECODE ) ) );
 }
 
@@ -987,7 +1008,7 @@ uno::Reference < embed::XStorage > SfxMe
 
     // medium based on OutputStream: must work with TempFile
     if( aLogicName.CompareToAscii( "private:stream", 14 ) == COMPARE_EQUAL
-	  || !::utl::LocalFileHelper::IsLocalFile( aLogicName ) )
+            || !SupportsActiveStreaming_Impl( aLogicName ) )
         CreateTempFileNoCopy();
 	// if Medium already contains a stream - TODO/LATER: store stream/outputstream in ImplData, not in Medium
 	else if ( GetItemSet()->GetItemState( SID_STREAM ) < SFX_ITEM_SET )
@@ -1131,7 +1152,7 @@ uno::Reference < embed::XStorage > SfxMe
 
             try
             {
-                if ( IsReadOnly() && ::utl::LocalFileHelper::IsLocalFile( aLogicName ) )
+                if ( IsReadOnly() && SupportsActiveStreaming_Impl( aLogicName ) )
                 {
                     //TODO/LATER: performance problem if not controlled by special Mode in SfxMedium
                     //(should be done only for permanently open storages)
@@ -1946,7 +1946,7 @@ void SfxMedium::Transfer_Impl()
 			xComEnv = new ::ucb::CommandEnvironment( xInteractionHandler,
 													  Reference< ::com::sun::star::ucb::XProgressHandler >() );
 
-        if ( ::utl::LocalFileHelper::IsLocalFile( aDest.GetMainURL( INetURLObject::NO_DECODE ) ) || !aDest.removeSegment() )
+		if ( SupportsActiveStreaming_Impl( aDest.GetMainURL( INetURLObject::NO_DECODE ) ) || !aDest.removeSegment() )
 		{
 			TransactedTransferForFS_Impl( aSource, aDest, xComEnv );
 		}
