C#
.NET 4.7.2
コンソールアプリケーションでファイルのダウンロードを実装しています。
C#
1WebClient wc = new WebClient(); 2wc.DownloadFile(url_1, "C:\hoge.sys"); 3wc.DownloadFile(url_2, "C:\hoge.bat"); 4wc.Dispose();
といった具合にダウンロードさせているのですが、
hoge.batやhoge.txtをURLからダウンロードすると、
URLのサイトのHTMLそのものをダウンロードしてしまいます。
hoge.sysなどのダウンロードは正常に行えているのですが。
解決方法として、zipとして落として解凍するのもありですが、出来る限り処理をスマートに行いたいので、解決方法がございましたらご教授願いたいです。
宜しくお願い致します。
そうなるURLを具体的に書いて頂けますか。
様々なURLを試しましたが全て同じ結果です。
Dropbox、GoogleDrive、Gofile全てです。
様々とか言われても何も具体的な事言わないと、何ともなんですが・・・
今ぱっとGoogleドライブを見たんですが、取得できるURLが共有リンクぐらい(Web上で出すのでこのページはもちろんHTML)しか見当たらず。
ただ、ファイルそのものを指すURLがあって、それを指定してるってことですよね?
Dropboxであれば
https://www.dropbox.com/s/8cn5sgi2yafdqnjcd/hoge.sys
https://www.dropbox.com/s/8cn5sgi2yafdqnjcd/hoge.txt
GoFileであれば
https://gofile.io/?c=CKAdZ9mj
こういったURLです。
hoge.sysは正常にダウンロードできてます。
Dropboxにファイルを起き、共有リンクを作ったら似たようなURLになりました。
が、これはWeb上でファイルを見るURLであって、ファイルそのものではないのでは。
質問者さんが書いたURLも、こちらからは見れませんが、おそらくWeb上でファイルが閲覧できる共有リンクのURLであって、ファイル単体ではないですよね?
ダウンロードって押して、実際取ってきたURLが正しいURLなのでは。(その部分の仕様はわからないので、その先のURLはなんともですが)
貼ったリンクは全て共有リンクです。(ダウンロードされたくないのでURL改変していますが..)
Dropboxの場合、共有URLでないとダウンロードできないような..
そもそも、その URL にはダウンロードできるようなリソースは無くて、エラーメッセージを html で返しているからではないかと思いますけど?
こちらに貼り付けたURLは適当に入力したものです。
.batや.txtといった書式のファイルのみそのページのHTML全文が書かれたものをダウンロードしてくるのです。
同じサービスで生成したURLからダウンロードした.sysのファイルは正常にダウンロードでき、使えてます。
テキトーなことは書かないでください。依然として意味不明ですが、指定した URL にリソースがないということはホントにないのですか?
テキトーなことと言われましても...^^;
はい、ありません。
問題点であるダウンロードされた.batの内容です: https://pastebin.com/aTvaEkyD
(本来であれば数行のコマンドが記されたものなのです)
URL さえわかればいいのですからダミーのテキストファイルを作成して共有すればいいんですよ。
test.txt を GoogleDrive で共有してみました。
(1) 共有リンクの URL
https://drive.google.com/open?id=1bCkDVRMkCrRIz_S2-3uoDS4_QihsGf2_
(2) 共有リンクからリダイレクトされた URL
https://drive.google.com/file/d/1bCkDVRMkCrRIz_S2-3uoDS4_QihsGf2_/view
(3) 「ダウンロード」ボタンを押して test.txt がダウンロードできる URL
https://doc-08-3g-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/sakbds15caoa5an39tvvi08l7tcmd96d/1564754400000/09803223865186622040/*/1bCkDVRMkCrRIz_S2-3uoDS4_QihsGf2_?e=download
(1) や (2) ではなく、(3) をダウンロードする必要がありますが
Karna さんは C# でどの URL をダウンロードしようとしていますか?
追加情報です。
(3) のURL は一時的なもので変わってしまうようです。
(4) https://drive.google.com/uc?id=1bCkDVRMkCrRIz_S2-3uoDS4_QihsGf2_
これをダウンロードしたらちゃんと取得できました。
test.bat も OK
https://drive.google.com/uc?id=1NNnJa1S1xhaaAWT-WdNs7D8m71yK-yh8
> はい、ありません。
アプリがファイルを生成するのでなく、静的ファイルが Web サーバーに存在していて、それをダウンロードするという話と理解しているのですが、違うのですか?
その理解で合っていれば、ファイルがないのでは何ともならないのは当たり前。またテキトーな事を言われてる気がしますけど・・・
Dropbox のファイルをダウンロードするには認証が必要だったはずです。API を使ってください。
あなたの回答
tips
プレビュー