Extrahieren von Dateien aus einer sharepoint Datenbank

Ich versuche zu erstellen, die ein kleines Programm in C# zum extrahieren von Dateien aus einer Sharepoint-Datenbank. Ich erhielt den code aus einer online-Suche und ich bin versucht, um es zu Bearbeiten, so dass die Dateien extrahiert werden, um einen bestimmten Ordner Beibehaltung der Ordner in der Sharepoint-Datenbank.

Speziell möchte ich dem Benutzer geben Sie den Namen des Servers ein, von der form, den Namen der Datenbank, die Sie versuchen, Dateien zu extrahieren, und schließlich der Pfad, den Sie verwenden möchten, um die Dateien zu extrahieren.

Bin ich immer einen Fehler, wenn ich Debuggen.

Die Fehlermeldung heißt: Could not find a part of the path:

Über diese code-Zeile:

FileStream fs = new FileStream(txtdir.Text + "/" + DirName + "/" + LeafName,
FileMode.Create, FileAccess.Write);

Hier ist mein code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace SPEXTRACTOR
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    }

    private void ENTER_Click(object sender, EventArgs e)
    {
      string DBConnString = "Server=" + txtserver.Text + ";Database=" 
                            + txtDB.Text + ";Trusted_Connection=True;";
      SqlConnection con = new SqlConnection(DBConnString);
      con.Open();

      SqlCommand com = con.CreateCommand();
      com.CommandText = "SELECT ad.SiteId, ad.Id, ad.DirName," +
          " ad.LeafName, ads.Content" +
          " FROM AllDocs ad, AllDocStreams ads" +
          " WHERE ad.SiteId = ads.SiteId" +
          " AND ad.Id = ads.Id" +
          " AND ads.Content IS NOT NULL" +
          " Order by DirName";


      //SqlCommand com = con.CreateCommand();
      //com.CommandText = "select DirName, LeafName, Content 
        from AllDocStreams, AllDocs 
        where (LeafName like '%.doc' or LeafName like '%.xls' 
               or LeafName like '%.pdf' or LeafName like '%.ppt') 
               and Content is not NULL";


      //com.CommandText = "select DirName, LeafName, Content 
        from AllDocStreams, AllDocs 
        where (LeafName like '%.doc' or LeafName like '%.xls' 
               or LeafName like '%.pdf' or LeafName like '%.ppt') 
               and Content is not NULL";


      SqlDataReader reader = com.ExecuteReader();

      while (reader.Read())
      {
        //grab the file's directory and name
        string DirName = (string)reader["DirName"];
        string LeafName = (string)reader["LeafName"];

        if (!Directory.Exists(DirName))
        {
          Directory.CreateDirectory(DirName);
          Console.WriteLine("Creating directory: " + DirName);
        }

        //FileStream fs = new FileStream(DirName + "/" + LeafName
                              , FileMode.Create, FileAccess.Write);
        FileStream fs = new FileStream(txtdir.Text + "/" + DirName + "/" 
                          + LeafName, FileMode.Create, FileAccess.Write);

        BinaryWriter writer = new BinaryWriter(fs);

        //depending on the speed of your network, 
        //you may want to change the buffer size (it's in bytes)
        int bufferSize = 1000000;
        long startIndex = 0;
        long retval = 0;
        byte[] outByte = new byte[bufferSize];

        //grab the file out of the db one chunk (of size bufferSize) at a time
        do
        {
          retval = reader.GetBytes(4, startIndex, outByte, 0, bufferSize);
          //retval = reader.GetBytes(2, startIndex, outByte, 0, bufferSize);
          startIndex += bufferSize;

          writer.Write(outByte, 0, (int)retval);
          writer.Flush();
        } while (retval == bufferSize);

        //finish writing the file
        writer.Close();
        fs.Close();

        Console.WriteLine("Finished writing file: " + LeafName);
      }

      //close the DB connection and whatnots
      reader.Close();
      con.Close();   
    }                   
  }
}
  • Können Sie debug oder schreiben Sie heraus, was der Wert von dem erwarteten vollständigen Pfad auf, dass die problematische Zeile?
  • erste iteration.
  • Beispiel: Wenn ich möchte, die Dateien werden extrahiert c:\aa
  • Ich bekomme diese Fehlermeldung: "could not find a part of the path "c:\\aa\\drive_space\\Shared Documents\\ArchivedData.xlsx'. Dies ist aus Debuggen.
  • txtdir.text das Textfeld, das der Benutzer das Verzeichnis, in dem Sie wünschen, um die Dateien extrahiert. dies ist in form.
InformationsquelleAutor Jeff | 2011-04-19
Schreibe einen Kommentar