Tôi đã tạo một ứng dụng tải xuống tất cả các thư viện tài liệu trong Trang web SP, nhưng tại một thời điểm nó cho tôi lỗi này (Tôi đã thử tìm kiếm trên google nhưng không thể tìm thấy gì cả, bây giờ nếu có ai biết bất kỳ thủ thuật nào để giải quyết vấn đề này, vui lòng trả lời nếu không, cảm ơn để nhìn nó)
System.IO.PathTooLongException: Đường dẫn được chỉ định, tên tệp hoặc cả hai đều quá dài. Tên tệp đủ điều kiện phải ít hơn 260 ký tự và tên thư mục phải ít hơn 248 ký tự. tại System.IO.Path.NormalizePathFast (Đường dẫn chuỗi, Boolean fullCheck) tại System.IO.Path.GetFullPathInternal (Đường dẫn chuỗi) tại System.IO.FileStream.Init (Đường dẫn chuỗi, chế độ FileMode, truy cập FileAccess, Quyền Int32, Sử dụng Boolean , Chia sẻ FileShare, Int32 bufferSize, tùy chọn FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) tại System.IO.FileStream..ctor (Đường dẫn chuỗi, Chế độ FileMode, Quyền truy cập FileAccess, Chia sẻ FileShare, Int32 bufferSize, Tùy chọn FileOptions) tại Hệ thống. IO.File.Create (Đường dẫn chuỗi)
nó đạt đến giới hạn cho chuỗi, Mã được đưa ra bên dưới,
#region Downloading Schemes
private void btnDownload_Click(object sender, EventArgs e)
{
TreeNode currentNode = tvWebs.SelectedNode;
SPObjectData objectData = (SPObjectData)currentNode.Tag;
try
{
CreateLoggingFile();
using (SPWeb TopLevelWeb = objectData.Web)
{
if(TopLevelWeb != null)
dwnEachWeb(TopLevelWeb, TopLevelWeb.Title, tbDirectory.Text);
}
}
catch (Exception ex)
{
Trace.WriteLine(string.Format("Exception caught when tried to pass TopLevelWeb:{1}, Title = {2}, object data to (dwnEachWeb_method), Exception: {0}", ex.ToString(), objectData.Web, objectData.Title));
}
finally
{
CloseLoggingFile();
}
}
private void dwnEachWeb(SPWeb TopLevelWeb, string FolderName, string CurrentDirectory)
{
if (TopLevelWeb != null)
{
if (TopLevelWeb.Webs != null)
{
CurrentDirectory = CurrentDirectory + "\\" + TopLevelWeb.Title;
CreateFolder(CurrentDirectory);
foreach (SPWeb ChildWeb in TopLevelWeb.Webs)
{
dwnEachWeb(ChildWeb, ChildWeb.Title, CurrentDirectory);
ChildWeb.Dispose();
}
dwnEachList(TopLevelWeb, CurrentDirectory);
//dwnEachList(TopLevelWeb, FolderName, CurrentDirectory);
}
}
}
private void dwnEachList(SPWeb oWeb, string CurrentDirectory)
{
foreach (SPList oList in oWeb.Lists)
{
if (oList is SPDocumentLibrary && !oList.Hidden)
{
dwnEachFile(oList.RootFolder, CurrentDirectory);
}
}
}
private void dwnEachFile(SPFolder oFolder, string CurrentDirectory)
{
if (oFolder.Files.Count != 0)
{
CurrentDirectory = CurrentDirectory + "\\" + oFolder.Name;
CreateFolder(CurrentDirectory);
foreach (SPFile ofile in oFolder.Files)
{
if (CreateDirectoryStructure(CurrentDirectory, ofile.Url))
{
var filepath = System.IO.Path.Combine(CurrentDirectory, ofile.Url);
byte[] binFile = ofile.OpenBinary();
System.IO.FileStream fstream = System.IO.File.Create(filepath);
fstream.Write(binFile, 0, binFile.Length);
fstream.Close();
}
}
}
}
//creating directory where files will be download
private bool CreateDirectoryStructure(string baseFolder, string filepath)
{
if (!Directory.Exists(baseFolder)) return false;
var paths = filepath.Split('/');
for (var i = 0; i < paths.Length - 1; i++)
{
baseFolder = System.IO.Path.Combine(baseFolder, paths[i]);
Directory.CreateDirectory(baseFolder);
}
return true;
}
//creating folders
private bool CreateFolder(string CurrentDirectory)
{
if (!Directory.Exists(CurrentDirectory))
{
Directory.CreateDirectory(CurrentDirectory);
}
return true;
}
//shorting string
#endregion