dotnet mauiで、DropBox内のCSVファイルの読み込みがHTMLデータになってしまう

康二郎 井上 60 評価のポイント
2024-08-21T08:07:12.42+00:00

WEB版DropBox内にCSVファイルをアップして、リンク先をコピーし 、以下のfileUrlにセットして、実行しました。

string fileUrl = "https://www.dropbox.com/scl/fi/sulx4lr91qy98a12pclzu/XXXX.csv?dl=1";

string localPath = Path.Combine(FileSystem.Current.AppDataDirectory, "XXXX.csv");

System.Diagnostics.Debug.WriteLine($"Local file path: {localPath}");

try

{

 // ファイルをダウンロード

 var response = await client.GetAsync(fileUrl);

 response.EnsureSuccessStatusCode();

 // ダウンロードしたファイルをバイト配列として読み込む

 var fileBytes = await response.Content.ReadAsByteArrayAsync();

 // バイト配列をローカルファイルに書き込む

 await File.WriteAllBytesAsync(localPath, fileBytes);

 Debug.WriteLine("ファイルのダウンロードが完了しました。");

}

catch (Exception ex)

{

 Debug.WriteLine("ファイルのダウンロードに失敗しました。");

 Debug.WriteLine($"エラー: {ex.Message}");

}

ファイルは、DropBoxから、localPathへダウンロードされましたが、CSVファイルの内容が、元の内容でなく、HTMLデータが、入ってしまいました。訂正について、教えてください。

C#
C#
C 言語ファミリをルーツとし、コンポーネント指向プログラミングのサポートを含む、オブジェクト指向およびタイプセーフのプログラミング言語。
37 件の質問
{count} 件の投票

7 件の回答

並べ替え方法: 最も役に立つ
  1. 康二郎 井上 60 評価のポイント
    2024-08-23T14:25:21.4033333+00:00
    1. 新たに、dotnet mauiで、ダウンロード等のアプリ(ここでは、DropBoxCSVFileLoderという名前)を作成し、DropBox.apiもインストールしておきます。そして以下のようなコードで、ダウンロード等をします。

    using Dropbox.Api;

    using Dropbox.Api.Files;

    using System;

    using System.IO;

    using System.Threading;

    using System.Threading.Tasks;

    using Microsoft.Maui.Controls;

    using Microsoft.Maui;

    using System.Diagnostics;

    namespace DropBoxCSVFileLorder

    {

    public partial class MainPage : ContentPage
    
    {
    
        int count = 0;
    
        public MainPage()
    
        {
    
            InitializeComponent();
    
            InitializeAsync();
    
        }
    
        private async void InitializeAsync()
    
        {
    
            Debug.WriteLine("InitializeAsyn called.");
    
            string accessToken = "XXXXXX"; // 取得したアクセストークンを設定
    
            string dropboxFilePath = "/Apps/CSVFileApp/test.csv"; // Dropbox内のファイルパス
    
            string localFilePath = Path.Combine(FileSystem.Current.AppDataDirectory, "test.csv");
    
            System.Diagnostics.Debug.WriteLine($"Local file path: {localFilePath}");
    
            using (var dbx = new DropboxClient(accessToken))
    
            {
    
                Debug.WriteLine($"Attempting to download file from: {dropboxFilePath}");
    
                try
    
                {
    
                    // Dropboxからファイルをダウンロード
    
                    var response = await dbx.Files.DownloadAsync(dropboxFilePath);
    
                    var fileBytes = await response.GetContentAsByteArrayAsync();
    
                    // ファイルをローカルに保存
    
                    File.WriteAllBytes(localFilePath, fileBytes);
    
                    Debug.WriteLine($"File downloaded and saved to: {localFilePath}");
    
                }
    
                catch (Exception ex)
    
                {
    
                    Debug.WriteLine("Error downloading file");
    
                    // エラーハンドリング
    
                    Debug.WriteLine($"Exception: {ex.GetType().Name}");
    
                    Debug.WriteLine($"Message: {ex.Message}");
    
                    Debug.WriteLine($"StackTrace: {ex.StackTrace}");
    
                }
    
            }
    
        }
    
            private void OnCounterClicked(object sender, EventArgs e)
    
        {
    
            count++;
    
            if (count == 1)
    
                CounterBtn.Text = $"Clicked {count} time";
    
            else
    
                CounterBtn.Text = $"Clicked {count} times";
    
            SemanticScreenReader.Announce(CounterBtn.Text);
    
        }
    
    }
    

    }


  2. 康二郎 井上 60 評価のポイント
    2024-08-26T06:36:51.41+00:00

    3)のLordrを、作成後2日?後に実施し、アクセストークンが無効または期限切れに、なり、ファイルのダウンロードは、失敗しました。DropBoxは、最低有料サービスが他のOneDriveなどと比べて、格段に高いので、これによるファイル共有は、あきらめようと思います。やり方は、勉強できたと思います。ありがとうございました。

    0 件のコメント コメントはありません

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。