SharePoint, Upload de fichier et FileStream

Signaler
Messages postés
2
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
6 juillet 2005
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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 !?
Messages postés
2
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
6 juillet 2005

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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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..