我已经安装了Codeplex6.5版(代码来自SenseNet )。我想使用Sensenet客户端API上传内容存储库中的文件,但不幸的是它不支持批量上传。
string [] fileEntries = Directory.GetFiles(@"C:\Users\conyna\Downloads\Chirag");
foreach (string fileName in fileEntries)
{
using (Stream fs = File.OpenRead(fileName))
{
string fn = Path.GetFileName(fileName);
Task<SenseNet.Client.Content> x = SenseNet.Client.Content.UploadAsync("/Root/Sites/Default_Site/workspaces/(apps)/DocumentLibrary", fn, fs);
}
}发布于 2017-05-02 20:50:35
上面的代码有两个问题:
await Content.UploadAsync(...)你也可以考虑在客户端使用导入器类,它能够导入完整的目录结构。
/Root/Sites/Default_Site/workspaces/Document/SampleWorkspace/DocumentLibrary
发布于 2017-12-15 18:58:01
我们使用SN ClientLibrary创建了一个小型应用程序。我认为,您可以使用此应用程序/信息/代码。
此应用程序可以通过Client Libray上传整个文件夹。请查看我的Github存储库:https://github.com/marosvolgyiz/SNClientLibraryUploader
有相应的上传方法:
public async Task Upload()
{
try
{
Console.WriteLine("Initilization...");
ClientContext.Initialize(new[] { sctx });
Console.WriteLine("Upload Started");
//Is Parent exists
var content = await Content.LoadAsync(Target);
if (content != null)
{
//Uploading files
var tasks = new List<Task>();
foreach (var file in Files)
{
string fileTargetFolder = Target + file.DirectoryName.Replace(Source, "").Replace(BaseDirectory, "").Replace("\\", "/");
var fileTargetContentFolder = await Content.LoadAsync(fileTargetFolder);
if (fileTargetContentFolder == null)
{
if (CreateFolderPath(Target, file.DirectoryName.Replace(Source, "")))
{
fileTargetContentFolder = await Content.LoadAsync(fileTargetFolder);
Console.WriteLine("#Upload file: " + file.FullName);
tasks.Add(Content.UploadAsync(fileTargetContentFolder.Id, file.Name, file.OpenRead()));
LoggerClass.LogToCSV("File uploaded", file.Name);
}
else
{
LoggerClass.LogToCSV("File target folder does not exist or you do not have enough permission to see! File can not be uploaded. ", file.Name);
}
}
else
{
Console.WriteLine("#Upload file: " + file.FullName);
tasks.Add(Content.UploadAsync(fileTargetContentFolder.Id, file.Name, file.OpenRead()));
LoggerClass.LogToCSV("File uploaded", file.Name);
}
}
await Task.WhenAll(tasks);
}
else
{
Console.WriteLine("Target does not exist or you do not have enough permission to see!");
LoggerClass.LogToCSV("Target does not exist or you do not have enough permission to see!");
}
Console.WriteLine("Upload finished.");
}
catch (Exception ex)
{
LoggerClass.LogToCSV(ex.Message);
}
}我希望我的回答对你有帮助。
Br,maros
https://stackoverflow.com/questions/43734953
复制相似问题