C# 将相同的文档上载到Dropbox.NET SDK
我有一个web API函数,它可以成功地将文件上传到Dropbox(使用新的.NET SDK),然后获得上传文件的共享链接(每个文档一次)C# 将相同的文档上载到Dropbox.NET SDK,c#,dropbox,C#,Dropbox,我有一个web API函数,它可以成功地将文件上传到Dropbox(使用新的.NET SDK),然后获得上传文件的共享链接(每个文档一次) 私有异步任务上载(DropboxClient dbx、字符串localPath、字符串remotePath) { 常量int ChunkSize=4096*1024; 使用(var fileStream=File.Open(localPath,FileMode.Open)) { 如果(fileStream.Length再次将相同的确切内容上载到同一路径时,D
私有异步任务上载(DropboxClient dbx、字符串localPath、字符串remotePath)
{
常量int ChunkSize=4096*1024;
使用(var fileStream=File.Open(localPath,FileMode.Open))
{
如果(fileStream.Length再次将相同的确切内容上载到同一路径时,Dropbox API不会产生冲突或文件的另一个副本,因为没有任何更改。(编辑:您可以使用strictConflict=true
,例如,启用,强制相同内容发生冲突)
如果您希望在帐户中有相同数据的另一个副本,则可以在第二次调用时指定不同的所需路径
或者,更有效地,您可以使用创建Dropbox上已存在文件的副本。当您再次将相同的确切内容上载到同一路径时,Dropbox API不会产生冲突或文件的其他副本,因为没有任何更改。(编辑:您甚至可以使用strictConflict=true
,例如,on,强制相同内容发生冲突)
如果您希望在帐户中有相同数据的另一个副本,则可以在第二次调用时指定不同的所需路径
或者,更有效的是,你可以使用Dropbox制作一份已经存在的文件副本。我发布了答案,也许会对某人有所帮助..我花了很长时间才弄明白
这是检查Dropbox中是否已存在文件的代码
如果该文件存在,它将检查该文件是否共享了链接,并根据结果生成/检索共享链接
private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath)
{
const int ChunkSize = 4096 * 1024;
using (var fileStream = File.Open(localPath, FileMode.Open))
{
if (fileStream.Length <= ChunkSize)
{
WriteMode mode = new WriteMode();
FileMetadata fileMetadata = await dbx.Files.UploadAsync(remotePath, body: fileStream, mode: mode.AsAdd, autorename: true);
//set the expiry date
var existingDoc = await dbx.Files.GetMetadataAsync(remotePath);
if (existingDoc.IsFile)
{
var sharedLink = await dbx.Sharing.ListSharedLinksAsync(remotePath);
var settings = new ListSharedLinksArg(remotePath);
ListSharedLinksResult listSharedLinksResult = await dbx.Sharing.ListSharedLinksAsync(remotePath);
if (listSharedLinksResult.Links.Count > 0)
{
return listSharedLinksResult.Links[0].Url;
}
else
{
var sharedLinkSettings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(remotePath, sharedLinkSettings);
return sharedLinkMetadata.Url;
}
}
else
{
var settings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower, settings);
return sharedLinkMetadata.Url;
}
}
else
{
var sharedLink = await this.ChunkUpload(dbx, remotePath, fileStream, ChunkSize);
return sharedLink;
}
}
私有异步任务上载(DropboxClient dbx、字符串localPath、字符串remotePath)
{
常量int ChunkSize=4096*1024;
使用(var fileStream=File.Open(localPath,FileMode.Open))
{
if(fileStream.Length 0)
{
返回listSharedLinksResult.Links[0].Url;
}
其他的
{
var sharedLinkSettings=新的sharedLinkSettings(过期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=等待dbx.Sharing.CreateSharedLinkWithSettingsAsync(远程路径,sharedLinkSettings);
返回sharedLinkMetadata.Url;
}
}
其他的
{
var settings=newsharedlinksettings(过期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower,设置);
返回sharedLinkMetadata.Url;
}
}
其他的
{
var sharedLink=wait this.ChunkUpload(dbx、remotePath、fileStream、ChunkSize);
返回共享链接;
}
}
我发布了答案,也许会对某人有所帮助..我花了很长时间才弄明白
这是检查Dropbox中是否已存在文件的代码
如果该文件存在,它将检查该文件是否共享了链接,并根据结果生成/检索共享链接
private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath)
{
const int ChunkSize = 4096 * 1024;
using (var fileStream = File.Open(localPath, FileMode.Open))
{
if (fileStream.Length <= ChunkSize)
{
WriteMode mode = new WriteMode();
FileMetadata fileMetadata = await dbx.Files.UploadAsync(remotePath, body: fileStream, mode: mode.AsAdd, autorename: true);
//set the expiry date
var existingDoc = await dbx.Files.GetMetadataAsync(remotePath);
if (existingDoc.IsFile)
{
var sharedLink = await dbx.Sharing.ListSharedLinksAsync(remotePath);
var settings = new ListSharedLinksArg(remotePath);
ListSharedLinksResult listSharedLinksResult = await dbx.Sharing.ListSharedLinksAsync(remotePath);
if (listSharedLinksResult.Links.Count > 0)
{
return listSharedLinksResult.Links[0].Url;
}
else
{
var sharedLinkSettings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(remotePath, sharedLinkSettings);
return sharedLinkMetadata.Url;
}
}
else
{
var settings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower, settings);
return sharedLinkMetadata.Url;
}
}
else
{
var sharedLink = await this.ChunkUpload(dbx, remotePath, fileStream, ChunkSize);
return sharedLink;
}
}
私有异步任务上载(DropboxClient dbx、字符串localPath、字符串remotePath)
{
常量int ChunkSize=4096*1024;
使用(var fileStream=File.Open(localPath,FileMode.Open))
{
if(fileStream.Length 0)
{
返回listSharedLinksResult.Links[0].Url;
}
其他的
{
var sharedLinkSettings=新的sharedLinkSettings(过期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=等待dbx.Sharing.CreateSharedLinkWithSettingsAsync(远程路径,sharedLinkSettings);
返回sharedLinkMetadata.Url;
}
}
其他的
{
var settings=newsharedlinksettings(过期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower,设置);
返回sharedLinkMetadata.Url;
}
}
其他的
{
var sharedLink=wait this.ChunkUpload(dbx、remotePath、fileStream、ChunkSize);
返回共享链接;
}
}
谢谢,问题是我事先不知道文档是否已经存在,所以copyanc
方法如何帮助呢?如果说我保留了相同的代码,当我尝试获取共享链接时,我得到了一个共享链接已存在错误
?您可以使用它来检查文件是否已经存在。如果链接已读取y存在于某个文件中,您可以使用检索该文件。您能给出一个示例吗?我没有这些示例。如果遇到任何问题,请尝试一下,并打开一个新问题。只需再问一个问题,如果共享链接已经存在,过期时间如何?如何设置现有链接,使其在7天内过期?谢谢你,问题是我事先不知道文档是否已经存在,copySync
方法如何帮助你?如果说我保留了相同的代码,当我尝试获取共享链接时,我得到了一个共享链接已经存在错误
?你可以使用它来检查文件是否已经存在。如果链接已经存在,则一个文件,您可以使用检索它。您能给出一个示例吗?我没有这些可用的示例。如果遇到任何问题,请尝试一下并打开一个新问题。如果共享链接