0

最終的に、ユーザーのファイルシステムからMVC .NET Webサイト経由でドキュメントをGoogleドライブ(サービスアカウントを使用する)にアップロードしようとしています。WebユーザーからAPI C#を使用してGoogleドライブにアップロード

アップロードを行うために適切なデザインを実装しているかどうかはわかりませんが、アップロードするファイルのパスがハングアップしています。

ウェブ

@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ステートメントに発生します。 Universe.txtの 'C:¥Program Files(x86)¥IIS Express¥Map'ファイルが見つかりませんでした。ファイル名は正しいが、パスは正しくありません。

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

... Googleドライブのファイルのものがここに

を行くそして、ストリームからファイルをアップロードします。

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

私はHTMLファイルヘルパーを使用して正しいパスを下っていますか?もしそうなら、パスを正しく動かすためのトリックは何ですか?また、最大500 MBのファイルサイズをサポートしたいと考えています(違いがある場合)。

+0

文字列のファイルはどのように解析されていますか?ファイルがテキストボックスに入力されている場合、ReadAllBytesが正しく動作するように文字列が正しくフォーマットされていることを確認する必要があります。 – JDavila

+0

ユーザは、Windowsファイルエクスプローラダイアログのようなものからファイルを選択します。ファイル名を入力するオプションはありません。ファイル名には "Universe.txtのマップ"が表示されますが、これは選択したファイルですが、ReadAllBytesステートメントには偽のパスが含まれています。 – John

+0

model-view-controllerタグはパターンに関する質問のためのものです。 ASP.NET-MVCの実装には特定のタグがあります。 –

答えて

0

ユーザーが選択したWindowsファイルエクスプローラダイアログからファイル名を取得する場合は、アップロードファイル変数へのパスを除いてファイル名を除外するだけで、以下を使用するべきではありません。どこyour'reはReadAllBytesはそれがあることがある

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

だけ変更するファイル名を指定してそのパスから読み取るしようとしているので、からコードを実行していますReadAllBytesで使用する必要があるフルパスとファイル名

var _uploadFile = file.File名前

+0

まだファイルが見つかりません。偽のパスで探しています。 – John

関連する問題