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. Deleted

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  2. Deleted

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  3. Deleted

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  4. Deleted

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  5. 康二郎 井上 60 評価のポイント
    2024-08-23T14:20:02.16+00:00

    2)dotnet mauiで新規のプロジェクト(ここではDropBoxCSVDownLorderとしました)を作り、Nugetで、DropBox.apiをインストールしておきます。そして以下のようなコードでアップします。

    ここを手動ですると、失敗します。

    using Dropbox.Api;

    using Dropbox.Api.Files;

    using System;

    using System.Diagnostics;

    using System.IO;

    using System.Threading.Tasks;

    //using Xamarin.Forms;

    namespace DropBoxCSVDownLoder

    {

    public partial class MainPage : ContentPage
    
    {
    
        int count = 0;
    
        public MainPage()
    
        {
    
            InitializeComponent();
    
            Debug.WriteLine("MainPage constructor called.");
    
            // GraphicsDrawableのインスタンスを作成してフィールドに設定
    
            
    
            // 非同期処理をコンストラクタ内で直接呼び出さずに、初期化メソッドを呼び出す
    
            // 非同期処理を別のメソッドで実行
    
            InitializeAsync();
    
        }
    
        private async void InitializeAsync()
    
        {
    
           string accessToken = "XXXXXXXXXXXXXX"; // 取得したアクセストークンを設定
    
            Debug.WriteLine("InitializeAsync called.");
    
            string localFilePath = @"C:\Users\your\Desktop\appName\test.csv"; // ローカルファイルのパス (例: Windows)
    
            string dropboxFilePath = "/Apps/CSVFileApp/test.csv"; // Dropbox内のファイルパス  このフォルダの作り方は、別に掲載
    
            try
    
            {
    
                using (var dbx = new DropboxClient(accessToken))
    
                {
    
                    // ローカルファイルを読み込み
    
                    byte[] fileBytes = File.ReadAllBytes(localFilePath);
    
                    // Dropboxにファイルをアップロード
    
                    using (var mem = new MemoryStream(fileBytes))
    
                    {
    
                        var updated = await dbx.Files.UploadAsync(
    
                            dropboxFilePath,
    
                            WriteMode.Overwrite.Instance,
    
                            body: mem);
    
                        Debug.WriteLine($"File uploaded to Dropbox: {updated.Name}");
    
                    }
    
                }
    
            }
    
            catch (Exception ex)
    
            {
    
                Debug.WriteLine($"Error uploading file: {ex.Message}");
    
            }                                                                                                                                                             }
    
        private void OnCounterClicked(object sender, EventArgs e)
    
        {
    
           略           
    
        }
    
    }
    

    }


お客様の回答

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