2012-09-13 114 views
0

我想從文件中獲取最後修改日期,但需要它的路徑?有人能告訴我如何獲得文件路徑嗎?從inputstream獲取文件路徑?

[HttpGet] 
public string uploadfile(string token, string filenameP, DateTime modDate, HttpPostedFileBase file) 
{ 
    MemoryStream target = new MemoryStream(); 
    file.InputStream.CopyTo(target);  
    byte[] data = target.ToArray(); 

    //ModDate = File.GetLastWriteTimeUtc("Path"); 
} 
+1

上傳通過'GET'文件通常不是做一個明智的做法。並且,由於服務器接收文件,它所具有的只是文件的*內容*。沒有元數據被髮送。 –

+0

@Damien_The_Unbeliever上傳文件的正確方法是什麼? – Pomster

+0

'POST'通常是首選。 「GET」在它可以處理的請求的大小上往往受到限制。 –

回答

3

您在上傳時正在服務器上創建新文件。最後修改日期將是「現在」(創建文件的時間)。沒有辦法窺探用戶的機器來獲取這些信息(這不是文件本身的一部分)。無法通過HTTP表單上傳完成。

現在,某些文件類型可能包含文件中的元數據,其中可能具有相關信息。如果你知道文件類型並且它確實包含這樣的元數據,那麼你可以打開文件並查看。

1

你只是不這樣做。大多數(如果不是全部的話)瀏覽器出於安全原因在互聯網場景中不提供這些信息。

+0

關於如何獲得文件的最後修改日期的任何建議呢? – Pomster

+1

我不相信你也可以得到它。如果瀏覽器心情愉快,只有文件名:)。您可以通過使用像Fiddler這樣的HTTP調試器/觀察器(http://www.fiddler2.com/fiddler2/)輕鬆查看瀏覽器發送的內容。 –

0

您可以通過javascript(HTML5)讀取日期並將其作爲隱藏的輸入字段發送。 喜歡的東西

<script> 
    function handleFileSelect(evt) { 
    var files = evt.target.files; // FileList object 

    // files is a FileList of File objects. List some properties. 
    var output = []; 
    for (var i = 0, f; f = files[i]; i++) { 
     output.push(f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString()); 
    } 
    document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; 
    } 
    document.getElementById('files').addEventListener('change', handleFileSelect, false); 
</script> 

http://www.html5rocks.com/en/tutorials/file/dndfiles/