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

相关问题