2016-10-17 3 views
-1

ich meinen eigenen Server mit lokalen IP habe, ist 172.23.1.66 mit CentOS 7C# Speicher PictureBox Bild Remote Server

Also in meinem Programm, kann ich Bild von meinem Server mit String Imagelocation = "http://172.23.1.66/img/978979892782.jpg" nennen;

In anderen Fall möchte ich es auf meinem Remote-Server speichern. Ich kann nicht im Windows Explorer darauf zugreifen, ich kann nur im Browser darauf zugreifen. Ich entfernte es mit WinSCP.

Ich habe wie diese versuchen:

picImage.Image.Save(@"\\172.23.1.66\img\" + clsLibrary.throwCode + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); // throwCode is my file name 

aber werfen Eine nicht behandelte Ausnahme des Typs 'System.Runtime.InteropServices.ExternalException' aufgetreten in System.Drawing.dll

auch ich habe Versuchen Sie, \\ in der ersten IP zu löschen.

Alles ist scheitern, kann jemand helfen?

+0

Schreiben Sie das Bild in eine temporäre Datei, senden Sie dann mit [SFTP] (http://blog.deltacode.be/2012/01/05/uploading-a-file- using-sftp-in-c-sharp /) – Martheen

+0

können Sie einen kleinen C++ - oder Python-Server schreiben, wo Sie einen Bilddateipuffer aus C# -Programm senden können und nach dem Empfang es Server-Programm wird es in Ihnen angegebenen Pfad –

Antwort

0

Verwenden Server MapPath um sicherzustellen, dass Sie Ihre URL auf Ihrem Server verwenden können:

picImage.Image.Save(Server.MapPath("~/img/") + clsLibrary.throwCode + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
+0

Es zeigt mir ein Fehler ** Der Name 'Server' existiert nicht im aktuellen Kontext. ** –

+0

Versuchen Sie stattdessen: System.Web.HttpContext.Current.Server.MapPath. –

+0

Nun, ich habe diesen Fehler ** Der Typ oder Namespace-Name 'HttpContext' existiert nicht im Namespace 'System.Web' (fehlt Ihnen eine Assembly-Referenz?) ** .. Ich weiß nicht, was passiert, ich versuche schon ** mit System.Web; ** und benutze deinen Code, bekomme aber immer noch den gleichen Fehler. Ich benutze Visual Studio 2015 und jetzt meinen Code wie folgt ** picImage.Image.Save (System.Web.HttpContext.Current.Server.MapPath ("172.23.1.66/img/") + clsLibrary.throwCode + ".jpg ", System.Drawing.Imaging.ImageFormat.Jpeg); ** Was passiert? –

0

-Sie sind nur Bild unter Verwendung von IP address.To Bild Adressen-

public string TEMP_PATH = "~/Temp/ImagesPath/"; 
auf IP sparen zu bekommen erlaubt

Stellen Sie sicher, dass Sie über das Zugriffsrecht/Temp/ImagesPath/verfügen.

Danach

try 
     { 
      FileInfo fileDatails = new FileInfo(AsyncImageUpload.PostedFile.FileName);/* here you can get file using you source like OFD or FileUpload Controls */ 
      string exten = fileDatails.Extension; 
      Stream fs = this.AsyncImageUpload.FileContent; 
      BinaryReader br = new BinaryReader(fs); 
      Byte[] bytes = br.ReadBytes((Int32)fs.Length); /* convert file to byte */ 
      String Base64file = Convert.ToBase64String(bytes); 
      destinationPath = Server.MapPath(TEMP_PATH + fileDatails.Name); 
      Byte[] frombytes = Convert.FromBase64String(Base64file); 
      File.WriteAllBytes(destinationPath, frombytes); /*write file to destination folder on server */ 
     } 
     catch (Exception exp) 
     { 
      throw exp; 
     } 
+0

Do I brauche http: // oder nur meine IP? Ich habe Zugriff auf ~/img/mit WinSCP –

+0

Was ist Dateivariablendeklaration? Ist das Stream-Datei? –

+0

hallo Bowi ... Bitte aktualisierten Code sehen. Keine Notwendigkeit, http: // oder IP zu erwähnen. Stattdessen Deklarieren Sie die öffentliche Zeichenfolge TEMP_PATH = "~/img /"; wenn Ihre Anwendung auch auf demselben Remote-Server ausgeführt wird. –