2011-10-30 79 views
0

的目錄名我有作用的控制器:的String.Empty作爲HttpPostedFileBase

[HttpPost] 
     public ActionResult Add(Question container, HttpPostedFileBase file) 
     { 

      if (file != null && file.ContentLength > 0) 
      { 
       var clientPath=Path.GetDirectoryName(file.FileName); 

和clientpath是""

我需要這個,因爲我不希望保存的文件在我的服務器,但馬上將其發送至Flickr

 string photoId = flickr.UploadPicture(clientPath, title, description, "", uploadAsPublic, false, false); 

我怎樣才能得到客戶端文件的路徑?

我使用FlickrNet庫順便說一句。

+1

現代瀏覽器不會發送完整的文件路徑(由於安全原因),因此您無法知道文件的位置,只是它的名稱。 –

回答

1

將文件直接發送而不先保存在服務器上,只需使用重載的方法:

string photoId = flickr.UploadPicture(file.InputStream, title, description, "", uploadAsPublic, false, false); 
1

你說你想要的文件直接發送至Flickr,但你的代碼嘗試使用clientpath爲這...即使它不是空的(這是因爲安全!)你的代碼將無法工作...因爲它會嘗試使用只存在於ASP.NET的客戶端的路徑,應用程序,就好像它是您的服務器上的路徑...

你試圖AFAIK不可能 - 什麼是可能的是這樣的:

如果FlickrNet庫提供了一個UploadPicture接受Stream的方法,那麼你可以用file.InputStream來調用它......如果它沒有提供這樣的超載,你將不得不在服務器上本地保存文件,以便將其上傳到Flickr!