Asp.Net 文件通过 api 上传到保管箱?
Asp.Net file upload to dropbox via api?
我正在尝试使用 HighLabo 进行保管箱通信。但它给出了一个错误。这是我的代码
private const string App_key = "my_app_key";
private const string App_secret = "my_app_secret";
OAuthClient ocl = null;
HigLabo.Net.AuthorizeInfo ai = null;
public void UploadFile(byte[] content, string filename, string target)
{
ocl = 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;
ul.FolderPath = target;
ul.FileName = filename;
ul.LoadFileData(content);
Metadata md = cl.UploadFile(ul);
}
protected void Button1_Click(object sender, EventArgs e)
{
//string filename = Path.GetFullPath(FileUpload1.FileBytes);
//byte[] bytes = System.IO.File.ReadAllBytes(filename);
UploadFile(FileUpload1.FileBytes, "sundas.jpg", "/Apps/synch/");
}
我正在
上的值不能为空错误
ai = ocl.GetAuthorizeInfo();
行。有人知道这个问题吗?
我还尝试使用 Nemiro 和 Dropnet 库。在 Nemiro 中,我可以使用 winforms。但是 nemiro 和 dropnet 对于 webforms 来说都不难。我必须解决这个问题。
Nemiro.OAuth 首先是为 ASP.NET 创建的(WebForms, MVC).
以下 link 您可以找到 Dropbox 和 WebForms 的示例:
https://github.com/alekseynemiro/nemiro.oauth.dll/tree/master/examples/DropBoxWebForms
用户授权后,您应该保存一个访问令牌。
通常,将访问令牌保存到数据库。这些示例使用 Session。但是 Session 不是存储访问令牌的好地方。
如果您将访问令牌保存到数据库,或者至少是一个文本文件,您可以使用它来查询,而无需重新授权。
我认为你和 HighLabo 有同样的问题。您需要在身份验证后保存访问令牌,并将其用于对 API.
的所有请求
我用 Nemiro.OAuth 解决了我的问题。以下示例非常有帮助。
https://github.com/alekseynemiro/nemiro.oauth.dll/tree/master/examples/DropBoxWebForms
我正在尝试使用 HighLabo 进行保管箱通信。但它给出了一个错误。这是我的代码
private const string App_key = "my_app_key";
private const string App_secret = "my_app_secret";
OAuthClient ocl = null;
HigLabo.Net.AuthorizeInfo ai = null;
public void UploadFile(byte[] content, string filename, string target)
{
ocl = 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;
ul.FolderPath = target;
ul.FileName = filename;
ul.LoadFileData(content);
Metadata md = cl.UploadFile(ul);
}
protected void Button1_Click(object sender, EventArgs e)
{
//string filename = Path.GetFullPath(FileUpload1.FileBytes);
//byte[] bytes = System.IO.File.ReadAllBytes(filename);
UploadFile(FileUpload1.FileBytes, "sundas.jpg", "/Apps/synch/");
}
我正在
上的值不能为空错误ai = ocl.GetAuthorizeInfo();
行。有人知道这个问题吗?
我还尝试使用 Nemiro 和 Dropnet 库。在 Nemiro 中,我可以使用 winforms。但是 nemiro 和 dropnet 对于 webforms 来说都不难。我必须解决这个问题。
Nemiro.OAuth 首先是为 ASP.NET 创建的(WebForms, MVC).
以下 link 您可以找到 Dropbox 和 WebForms 的示例: https://github.com/alekseynemiro/nemiro.oauth.dll/tree/master/examples/DropBoxWebForms
用户授权后,您应该保存一个访问令牌。
通常,将访问令牌保存到数据库。这些示例使用 Session。但是 Session 不是存储访问令牌的好地方。
如果您将访问令牌保存到数据库,或者至少是一个文本文件,您可以使用它来查询,而无需重新授权。
我认为你和 HighLabo 有同样的问题。您需要在身份验证后保存访问令牌,并将其用于对 API.
的所有请求我用 Nemiro.OAuth 解决了我的问题。以下示例非常有帮助。
https://github.com/alekseynemiro/nemiro.oauth.dll/tree/master/examples/DropBoxWebForms