2011-10-22 38 views

回答

2

如果您有兩個應用程序將與相同的文件進行交互,最好是通過一個允許您上傳/下載圖像的操作而不是將它們直接存儲爲內容的ImageController。這樣,兩個應用程序都可以引用存儲在數據庫中的相同文件位置或圖像並對其進行處理。您的下載操作只需使用FileContentResult從文件中提供字節。您可以從文件擴展名中派生內容類型。

使用數據庫的示例。請注意,我假定數據庫表包含上載時確定的內容類型。您還可以使用混合方法將圖像元數據存儲在數據庫中,並從文件存儲中加載實際文件。

public class ImageController : Controller 
{ 

     public ActionResult Get(int id) 
     { 
      var context = new MyDataContext(); 
      var image = context.Images.SingleOrDefault(i => i.ID == id); 
      if (image != null) 
      { 
       return File(image.Content, image.ContentType); 
      } 
      // or you could return a placeholder image here if appropriate. 
      throw new HttpException(404, "The image does not exist"); 
     } 
} 

另一種方法是將您的管理界面合併到同一應用程序的某個區域中,而不是單獨的項目中。這樣你可以重新使用content/images目錄。我發現,當您擁有動態圖像時,從編程的角度來看,數據庫或混合方法的效果更好,因爲它與其他數據模型更加一致。

+0

因此,使用你的建議,只有一個項目將涉及獲取和上傳圖片。另一個項目的表單只會引用action屬性中的其他項目位置(如http://www.myothermvc.tld/get-or-upload)來執行任何操作。這是你的意思@tvanfosson? –

+1

@FabioMilheiro你可以去任何一種方式。如果您沒有內容限制,即允許公衆訪問圖像,則將所有內容全部放入一個應用程序並簡單引用即可。如果您想要應用訪問限制,即,除非已登錄或以特定角色訪問映像,否則在這兩個應用程序中都有映像控制器,並簡單引用相同的文件存儲或數據庫。 – tvanfosson

+0

這都是公開的。感謝日誌@tvanfosson!總是一個驚人的幫助! –

1

你可以嘗試這樣的..

讓我們假設你所有的圖片都在項目A,你想在B項目與Visual Studio使用相同的圖像

打開B項目。在解決方案資源管理器中,右鍵單擊您的項目名稱並選擇「添加現有項目...」。

瀏覽光盤上存儲項目A中圖像的物理位置,然後選擇要導入的文件。

然後您就可以訪問從項目中的這些圖像在B項目

+0

你的意思很好,但我談論的圖像不是靜態的。好的建議,但。 –

相關問題