2016-10-17 4 views
-1

У меня есть свой собственный сервер с локальным IP является 172.23.1.66 с CentOS 7C# Сохранить PictureBox изображения на удаленный сервер

Так что в моей программе, я могу назвать изображение с моего сервера с струнной imageLocation = «http://172.23.1.66/img/978979892782.jpg»;

В другом случае я хочу сохранить его на удаленном сервере. Я не могу получить доступ к нему в проводнике Windows, я могу получить доступ к нему в браузере. Я удаляю его с помощью WinSCP.

меня попробовать, как это:

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

но бросить необработанное исключение типа 'System.Runtime.InteropServices.ExternalException' произошло в System.Drawing.dll

У меня также есть попробуйте удалить \\ в первом из IP.

Все терпит неудачу, может ли кто-нибудь помочь?

+0

Записываем образ во временный файл, а затем отправить его с помощью [SFTP] (http://blog.deltacode.be/2012/01/05/uploading-a-file- using-sftp-in-c-sharp /) – Martheen

+0

вы можете написать небольшой сервер C++ или python, где вы можете отправить буфер изображения с программой C#, и после его получения серверная программа сохранит его в указанном вами пути –

ответ

0

Использование сервера MapPath, чтобы убедиться, что вы можете использовать URL на сервере:

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

Это покажет мне, error ** Имя «Сервер» не существует в текущем контексте ** –

+0

Попробуйте это вместо: System.Web.HttpContext.Current.Server.MapPath. –

+0

Ну, теперь у меня есть эта ошибка ** Тип или имя пространства имен «HttpContext» не существует в пространстве имен «System.Web» (вам не хватает ссылки на сборку?) ** .. Я не знаю, что произойдет, я уже попробуйте ** используя System.Web; ** и используйте свой код, но я все равно получаю ту же ошибку. Я использую Visual Studio 2015, и теперь мой код выглядит следующим образом: picImage.Image.Save (System.Web.HttpContext.Current.Server.MapPath ("172.23.1.66/img/") + clsLibrary.throwCode + ".jpg ", System.Drawing.Imaging.ImageFormat.Jpeg); ** Что происходит? –

0

-вы только позволяют получить изображение с помощью IP address.To сохранить изображение на IP адресно

public string TEMP_PATH = "~/Temp/ImagesPath/"; 

Убедитесь, что у вас есть право на доступ/Temp/ImagesPath /.

После этого

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 нужен http: // или только мой IP-адрес? У меня есть доступ к ~/img/using WinSCP –

+0

Что такое объявление переменной файла? Это файл потока? –

+0

привет Bowi ... Пожалуйста, ознакомьтесь с обновленным кодом. Не нужно упоминать http: // или IP. Вместо этого объявите публичную строку TEMP_PATH = "~/img /"; если ваше приложение также работает на одном удаленном сервере. –

 Смежные вопросы

  • Нет связанных вопросов^_^