0

最終,我試圖通過MVC .NET網站將用戶文件系統中的文檔上傳到使用服務帳戶的Google Drive。使用API​​ C#從網絡用戶上傳到Google Drive

我不知道我是否正在實施適當的設計來完成上傳,但我正在掛起要上傳的文件的路徑。

網絡

@Html.TextBox("file", "file", new { type = "file", id = "fileUpload" }) 

控制器

public ActionResult GoogleDriveList(GoogleDrivePageVM vm, HttpPostedFileBase file) 

File _file = new File(); 

var _uploadFile = System.IO.Path.GetFileName(file.FileName); 
byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile); 

錯誤發生在ReadAllBytes聲明。它找不到文件'C:\ Program Files(x86)\ IIS Express \ Universe.txt的地圖'。文件名是正確的,但路徑不正確。

byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile); 
System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); 

...谷歌雲端硬盤文件的東西放在這裏

然後從流上傳文件。

FilesResource.InsertMediaUpload request = _service.Files.Insert(body, stream, body.MimeType); 
request.Upload(); 

那麼,我是使用HTML文件助手走下正確的道路嗎?如果是這樣,那麼讓路徑正常工作的訣竅是什麼?另外,我希望能夠支持高達500 MB的文件大小(如果這有所影響)。

+0

如何解析字符串文件?如果文件被輸入到文本框中,可能需要驗證字符串格式是否正確,以便ReadAllBytes正常工作。 – JDavila

+0

用戶從看起來像Windows文件瀏覽器對話框中選擇一個文件。沒有可以輸入文件名的選項。文件名顯示「Map of Universe.txt」,它是我選擇的文件,但ReadAllBytes語句包含僞造路徑。 – John

+0

請注意,模型 - 視圖 - 控制器標籤是關於模式的問題。 ASP.NET-MVC實現有一個特定的標籤。 –

回答

0

如果您從用戶選擇的Windows文件資源管理器對話框中獲取文件名,那麼您不應該使用下面的內容,因爲這樣只會刪除文件名,而不會將路徑導入上傳文件變量,我假設虛假路徑是其中your're運行從代碼,所以ReadAllBytes正試圖從該路徑與文件名讀

VAR _uploadFile = System.IO.Path.GetFileName(file.FileName)

只是改變,因此有您需要在ReadAllBytes中使用完整路徑和文件名

var _uploadFile = file.File名稱

+0

仍然沒有找到文件,並找到一個虛假的路徑。 – John

相關問題