【问题标题】:Dropbox API Unable to upload a file Issue while uploadingDropbox API 上传时无法上传文件问题
【发布时间】:2015-09-16 14:58:03
【问题描述】:

我使用 HigLabo.Net.Dropbox 将文件上传到 Dropbox。我创建了一个名为 synch 的应用程序,我正在尝试上传一个文件。下面是我的代码

 byte[] bytes = System.IO.File.ReadAllBytes(args[1]);   
 UploadFile(bytes,"sundas.jpg","/Apps/synch/");   


public static void UploadFile(byte[] content, string filename, string target)
    {
        string App_key = "xxxxxxxxxxxxxxx";
        string App_secret = "yyyyyyyyyyyyyy";
        HigLabo.Net.OAuthClient ocl = null;
        HigLabo.Net.AuthorizeInfo ai = null;                    
        ocl = HigLabo.Net.Dropbox.DropboxClient.CreateOAuthClient(App_key, App_secret);                        
        ai = ocl.GetAuthorizeInfo();             
        string RequestToken= ai.RequestToken;
        string RequestTokenSecret= ai.RequestTokenSecret;
        string redirect_url = ai.AuthorizeUrl;
        AccessTokenInfo t = ocl.GetAccessToken(RequestToken, RequestTokenSecret); 
        string Token= t.Token;
        string TokenSecret= t.TokenSecret;
        DropboxClient cl = new DropboxClient(App_key, App_secret, Token, TokenSecret); 
        HigLabo.Net.Dropbox.UploadFileCommand ul = new HigLabo.Net.Dropbox.UploadFileCommand();
        ul.Root = RootFolder.Sandbox;

        Console.WriteLine(ul.Root);
        ul.FolderPath = target;
        ul.FileName = filename;
        ul.LoadFileData(content); 
        Metadata md = cl.UploadFile(ul);
        Console.WriteLine("END");
    }

代码执行正常,但文件没有上传到 Dropbox。

我错过了什么吗?上传路径是否正确?无论是否上传,如何在 Dropbox 中查看文件?

在创建应用程序时是否有我遗漏的设置?我只是在看主页,我期待根文件夹中的文件。我说的对吗?

或者我需要查看其他位置吗?

【问题讨论】:

  • 您是否收到任何错误,API 请求返回的数据?
  • 感谢您的留言。打印时我得到 {"error": "Authentication failed"}....不确定哪个身份验证失败。我正在使用下拉框浏览器中的密钥。我还需要进行一些身份验证吗?
  • 我正在关注此链接codingstill.com/2013/11/…。我不确定我需要在哪里/我需要如何授权。请输入任何内容
  • 知道我需要通过提供我的保管箱凭据来手动授权。我需要这是自动化的。我知道访问代码。有没有办法通过代码授权,避免通过浏览器人工干预?
  • 您只需要认证一次。从那时起,您可以一遍又一遍地存储和重复使用相同的访问令牌。如果这只是供您使用,您可以generate an OAuth 2 access token from the App Console,但看起来您正在使用的库可能仍使用 OAuth 1 而不是 OAuth 2。

标签: c# dropbox dropbox-api higlabo


【解决方案1】:

感谢@smarx 和 @格雷格。

以下是完成任务的代码。再次感谢您的支持,希望对大家有所帮助。

string filePath="C:\\Tim\\sundar.jpg";
RestClient client = new RestClient("https://api-content.dropbox.com/1/");
IRestRequest request = new RestRequest("files_put/auto/{path}", Method.PUT);
FileInfo fileInfo = new FileInfo(filePath);
long fileLength = fileInfo.Length;
request.AddHeader("Authorization", "Bearer FTXXXXXXXXXXXXXXXXXXXisqFXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
request.AddHeader("Content-Length", fileLength.ToString());
request.AddUrlSegment("path", string.Format("Public/{0}", fileInfo.Name));
byte[] data = File.ReadAllBytes(filePath);
var body = new Parameter
{
    Name = "file",
    Value = data,
    Type = ParameterType.RequestBody,
};
request.Parameters.Add(body);
IRestResponse response = client.Execute(request);

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 2022-01-27
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多