Ich versuche, eine Google Drive-Datei mit ASP.NET, MVC, Google Drive API V2 in den Standard-Downloadordner des Benutzers herunterzuladen und über das Dienstkonto zu authentifizieren.Laden Sie die Google Drive-Datei von ASP.NET in den Standarddialog des Browsers
Die Beispiele, die ich gesehen habe, verwenden einen _saveTo Pfad und Dateinamen. Ich möchte nicht, dass der Benutzer diese Informationen angeben muss, bevor er den Download startet. Ich möchte nur, dass der Benutzer auf eine Datei in der Web-App klickt und den Browserdownload-Dialog anzeigt. Ist das möglich?
Hier sind die 3 Schichten:
CSHTML
<td>
<a href="@Url.Action("DownloadFile", "GoogleDrive", new { _fileId = item.DriveId })">@Html.DisplayFor(x => item.FileName)</a>
</td>
CONTROLLER
[HttpGet]
public ActionResult DownloadFile(string _fileId)
{
GoogleDrivePageVM vm = new GoogleDrivePageVM();
// Get Service
DriveService _service = GoogleDrive.GoogleDriveAPI.GoogleDriveAuthentication();
// Download File
File _file = GoogleDrive.GoogleDriveAPI.GetFile(_service, _fileId);
bool _success = GoogleDrive.GoogleDriveAPI.DownloadFile(_service, _file, null); // _saveTo);
return RedirectToAction("GoogleDriveList", "GoogleDrive");
}
SERVICE SCHICHT
public static Boolean DownloadFile(DriveService _service, File _file, string _saveTo)
{
if (!String.IsNullOrEmpty(_file.DownloadUrl))
{
try
{
var x = _service.HttpClient.GetByteArrayAsync(_file.DownloadUrl);
byte[] arrBytes = x.Result;
System.IO.File.WriteAllBytes("c://myFirstDownload.txt", arrBytes); //_saveTo
return true;
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
return false;
}
}
else
{
// The file doesn't have any content stored on Drive.
return false;
}
}
Ich fühle mich wie ich das falsch zu implementieren bin versucht, approac h. Kann jemand klären, ob das überhaupt möglich ist und mir in die richtige Richtung weisen? Kann ich einfach die DownloadURL der Datei von der Webseite verwenden?
Danke, das ist, was ich gesucht habe. Unter welchen Bedingungen möchte ich meinen ursprünglichen Ansatz verwenden? – John