SharePoint, Upload de fichier et FileStream

denouy Messages postés 2 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 6 juillet 2005 - 5 juil. 2005 à 14:57
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 6 juil. 2005 à 15:49
Bonjour j'essaye de faire un systeme qui permet de surveiller un dossier et d'envoyer les fichier que l'on copie dedans vers sharepoint et les supprimer du dossier.

Alors mon pb c'est que au niveau de la surveillance c ok, l'envoi c ok , la suppression c ok
mais qd on remet dans le repertoire un fichier avec le meme nom que le dernier deposé ca bug au niveau du read avec une erreur comme quoi il ya un processus qui utilise le fichier

aidez moi T-T

voici mon code

Dans le main
################


System.IO.FileSystemWatcher MyWatcher =
new System.IO.FileSystemWatcher();



// This code would go in one of the initialization methods of the class.


MyWatcher.Path = "e:\\sharepoint";



// Watch only for changes to *.pdf files.


MyWatcher.Filter = "*.pdf";


MyWatcher.IncludeSubdirectories =
false;



// Enable the component to begin watching for changes.


MyWatcher.EnableRaisingEvents =
true;



// Filter for created changes.


MyWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite


| NotifyFilters.FileName | NotifyFilters.DirectoryName;


MyWatcher.Created +=
new FileSystemEventHandler(OnChanged);



MyWatcher.Changed += new FileSystemEventHandler(OnChanged);


MyWatcher.Deleted +=
new FileSystemEventHandler(OnChanged);

et voila le handler (onchange)
#################################


private
static
void OnChanged(
object source, FileSystemEventArgs e)


{



// Site sharepoint de destination


SPWeb site =
new SPSite(http://serveur).OpenWeb();



// Chemin vers les fichiers pdf



string path = "e:\\sharepoint";


FileStream fStream;


DirectoryInfo d =
new DirectoryInfo (path);


FileSystemInfo[] f = d.GetFileSystemInfos() ;



// bouclage



foreach ( FileSystemInfo i
in f )


{



// Verifie le type de fichier



if (i.GetType().ToString()!= "System.IO.DirectoryInfo" )


{



// Si fichier pdf



if (i.Name.LastIndexOf(".pdf") == i.Name.Length - 4)


{



// ouverture fichier


fStream = File.OpenRead(i.FullName);



// Conversion en binaire



byte[] contents =
new
byte[fStream.Length];


fStream.Read(contents, 0, (
int)fStream.Length);


fStream.Close();



// Ajout sur sharepoint



if (site.Files.Add("Documents%20partages/" + i.Name, contents,
true) !=
null)


{


File.Delete(i.FullName);


}


}


}


}


}

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 juil. 2005 à 16:05
Je ne sais pas.. mais si tu modifies le fichier dans OnChanged ca lance un nouveau OnChanged, ca fait des appels récursifs, c'est normal !?
0
denouy Messages postés 2 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 6 juillet 2005
6 juil. 2005 à 14:27
Non je ne modifie pas le fichier je fais jsute une copie de celui ci ds un buffer et c celui la qui est envoyer



en fait je vien de m'apercesoir qu'en supprimant le delete ca marche
bien ca plante pas ca envoie bien comme ilfo mais bon ca supprime
pas c deja ca
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 juil. 2005 à 15:49
Peut être que je me plante, vu que j'ai juste "survolé" ton code.. mais tu demandes au Watcher de lancer un OnChanged quand tu "deletes" un fichier et justement tu "deletes" le fichier dans le OnChanged, ca fait des appels récursifs non !? Je suis pas sûr..
0
Rejoignez-nous