2010-03-15 7 views
1

En utilisant le lien ci-dessous, j'ai écrit un code pour mon application. Je ne suis pas en mesure de faire les choses bien, S'il vous plaît se référer le lien et me aider à Ot avec elle ...Téléchargement de fichiers sur le serveur de fichiers

Uploading files to file server using webclient class


Voici mon code: -

protected void Button1_Click(object sender, EventArgs e) 
{ 

    filePath = FileUpload1.FileName;  
    try 
    { 
     WebClient client = new WebClient(); 

     NetworkCredential nc = new NetworkCredential(uName, password); 

     Uri addy = new Uri("\\\\192.168.1.3\\upload\\"); 
     client.Credentials = nc; 
     byte[] arrReturn = client.UploadFile(addy, filePath); 

     Console.WriteLine(arrReturn.ToString()); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 

} 

I également utilisé: - File.Copy (filePath, "\\ 192.168.1.3 \ upload \");

La ligne suivante n'exécute pas ...

byte[] arrReturn = client.UploadFile(addy, filePath); 

essayé de changer à: -

byte[] arrReturn = client.UploadFile("\\\\192.168.1.3\\upload\\", filePath); 

IT ne fonctionne toujours pas ... Toute solution à ce problème ?? Je veux fondamentalement transférer un fichier du client au serveur de stockage de fichiers sans effectivement se connecter au serveur afin que le client ne puisse pas accéder directement à l'emplacement de stockage sur le serveur.

C'EST L'ERREUR I GET: - "Une exception est survenue lors d'une demande de WebClient"

+0

Avez-vous une exception, ou cela ne fait rien? Si le magasin est sécurisé (c'est-à-dire qu'il a besoin d'un utilisateur/d'un laissez-passer), il devra être fourni par l'utilisateur ou par usurpation d'identité avant que votre code ne fonctionne. – GrayWizardx

+0

Oui, nous avons vraiment besoin de plus. "Ne fonctionne pas" ne veut rien dire. Ce qui se produit? Je pense en quelque sorte ... une exception de sécurité qui explique réellement l'erreur;) – TomTom

+0

byte [] arrReturn = client.UploadFile (addy, filePath); Le code saute la ligne au-dessus ... – Imcl

Répondre

0

S'il vous plaît lire the following MSDN article, car il peut vous aider à répondre à votre question.

EDIT: Voici une (possible) réponse à ce que vous cherchez ... Pour copier des fichiers de la machine locale, vous pouvez simplement utiliser System.IO.File.Copy(), comme vous êtes déjà connecté à cette machine . Toutefois, pour copier les fichiers d'un ordinateur distant sur lequel vous n'êtes pas (encore) connecté, vous devez indiquer domainname, username et password pour procéder à l'authentification sur l'ordinateur distant. S'il vous plaît vérifier cela et confirmer si elle fait ce que vous voulez faire :)

public void copyRemoteFiles(string sourceFile, string destFile) { 
    IntPtr admin_token = default(IntPtr); 
    WindowsIdentity wid_current = WindowsIdentity.GetCurrent(); 
    WindowsIdentity wid_admin = null; 
    WindowsImpersonationContext wic = null; 

    try { 
     if (LogonUser(sUserName, sDomainName, sPassword, 9, 0, admin_token) != 0) { 
      wid_admin = new WindowsIdentity(admin_token); 
      wic = wid_admin.Impersonate(); 
      if (System.IO.File.Exists(sourceFile)) { 
       System.IO.File.Copy(sourceFile, destFile, true); 
      } 
      else { 
       //Copy Failed 
       return; 
      } 
     } 
     else { 
      return; 
     } 
    } 
    catch (System.Exception se) { 
     int ret = Marshal.GetLastWin32Error(); 
     MessageBox.Show(ret.ToString(), "Error code: " + ret.ToString()); 
     MessageBox.Show(se.Message); 
     if (wic != null) { 
      wic.Undo(); 
     } 
     return; 
    } 
    finally { 
     if (wic != null) { 
      wic.Undo(); 
     } 

    } 
} 
+0

Je l'ai déjà vérifié plus tôt. Ce code télécharge le fichier sur le côté client lui-même. J'ai besoin d'un code qui va télécharger un fichier sur le serveur de stockage (une autre machine et non la machine de l'utilisateur) dans le dossier partagé. – Imcl

+0

Je veux réellement copier/transférer des fichiers de la machine locale vers la machine distante. – Imcl

+1

Je pense que vous avez fourni le code pour une application Windows. C'est une application Web sur laquelle je travaille. – Imcl

1

Copie des fichiers d'un dossier à un autre dossier est très facile.
Le code ci-dessous est en C# .NET.
Ajoutez d'abord System.IO et System.NET à votre espace de noms. Ensuite, ajoutez le code suivant.

string _pathForImages = "c:\inetpub\wwwroot\NewFolder\ExistingFolder\Images\"; 
    try 
    { 
     string[] f = Directory.GetFiles(_pathForImages); 
     int k = f.Length; 
     string _pathForImages_dest = "c:\inetpub\wwwroot\NewFolder\NewFolder1\Images\"; 

     for (int i = 0; i < k; i++) 
     { 
      var kl = f[i].Split('\\'); 

      string fname = kl[kl.Length - 1]; 
      string j = _pathForImages_test; 
      System.IO.File.Copy(f[i], _pathForImages_dest + fname); 


     } 
    } 
    catch (Exception ex) 
    { 

    } 


Si vous souhaitez copier de nouveaux fichiers et les fichiers existants REMPLACER juste ajouter « true » à la File.Copy. Le code complet est:

string _pathForImages = "c:\inetpub\wwwroot\NewFolder\ExistingFolder\Images\"; 
    try 
    { 
     string[] f = Directory.GetFiles(_pathForImages); 
     int k = f.Length; 
     string _pathForImages_dest = "c:\inetpub\wwwroot\NewFolder\NewFolder1\Images\"; 

     for (int i = 0; i < k; i++) 
     { 
      var kl = f[i].Split('\\'); 

      string fname = kl[kl.Length - 1]; 
      string j = _pathForImages_test; 
      System.IO.File.Copy(f[i], _pathForImages_dest + fname,true); 


     } 
    } 
    catch (Exception ex) 
    { 

    } 
Questions connexes