#c#
Вопрос:
У меня есть Система.Рисование.Растровое изображение, которое нужно загрузить на сервер, все это работает нормально, за исключением того, что я записываю изображение на диск, загружаю изображение на диск, а затем, наконец, удаляю его. Есть ли способ сделать это без предварительного сохранения на диск и загрузки из памяти? Код, который я сейчас использую, выглядит примерно так.
System.Drawing.Bitmap bmp = new Bitmap(someX, someY); //code to create my image bmp.Save("c:sometempfile.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg); WebClient webClient = new WebClient(); webClient.UploadFile(urlToUploadTo, "POST", "c:sometempfile.jpeg"); System.IO.File.Delete("c:sometempfile.jpeg");
Комментарии:
1. Подсказка: перегрузка
bmp.Save
занимаетStream
. Есть особый видStream
, который называется аMemoryStream
.
Ответ №1:
Вы можете попробовать что-то вроде этого. Я не тестировал его, так что это зависит от вас, но в основном вы должны записать растровое изображение в поток памяти, после чего вы можете записать этот поток на целевой URL-адрес вашего веб-клиента с помощью нужного метода HTTP.
using (var client = new WebClient()) { MemoryStream memoryStream = new MemoryStream(); bmp.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); memoryStream.Seek(0, System.IO.SeekOrigin.Begin); using (var postStream = client.OpenWrite(endpointUrl)) { memoryStream.CopyTo(postStream); } }
Комментарии:
1. Вы можете удалить строку, в которой читается файл, больше нет файла для чтения.
2. Tnx, это действительно было не очень полезно :).