Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2015, 19:57   #1
ShadowInject
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 37
По умолчанию Загрузка файла HTTP на C#

Всем доброго дня/ночи/утра. Понадобилось загрузить файл средствами шарпа. Уже неделю мучаюсь, но ни как не могу понять реализацию. Были попытки через библиотеку xNet сделать, но и там свои проблемы. Может есть у кого прокоментированный код чтобы моя амфибия поняла, как это сделать. Передать нужно 2 параметра указанных на скриншоте.



Программа компилируется, но ни чего не отправляет
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace RefudScan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "JPEG|*.jpg|PNG|*.png|GIF|*.gif";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = ofd.FileName;
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
           
            string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
            var request = HttpWebRequest.Create("http://site.ru/upload.php") as HttpWebRequest;
            request.Method = "POST";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Referer = "http://site.ru/upload.php";
            request.UserAgent = @"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0";
            request.ContentType = String.Format("multipart/form-data; boundary=---------------------------{0}", boundary);
            request.KeepAlive = true;
            request.ProtocolVersion = new System.Version(1, 0);
            request.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3");
            request.Timeout = 600000;
            request.AllowAutoRedirect = true;
 
            string uploadFileContentType = "application/octet-stream"; // по умолчанию будет application/octet-stream
            Microsoft.Win32.RegistryKey myRegistryKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(Path.GetExtension(textBox1.Text));
            if (myRegistryKey != null && myRegistryKey.GetValue("Content Type") != null)
            {
                uploadFileContentType = myRegistryKey.GetValue("Content Type").ToString();
            }
 
            Stream myReqStream = request.GetRequestStream();
            string header = String.Format("\r\n--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n", boundary, "format");
            byte[] h = System.Text.Encoding.UTF8.GetBytes(header);
            myReqStream.Write(h, 0, h.Length);
            byte[] b = System.Text.Encoding.UTF8.GetBytes("xml");
            myReqStream.Write(b, 0, b.Length);
 
            header = String.Format("\r\n--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; " +
                                   "filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                                   boundary, "uploadedfile", Path.GetFileName(textBox1.Text), uploadFileContentType);
            h = System.Text.Encoding.UTF8.GetBytes(header);
            myReqStream.Write(h, 0, h.Length);
 
            using (FileStream myFile = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader myReader = new BinaryReader(myFile))
                {
                    byte[] buffer = myReader.ReadBytes(2048);
                    while (buffer.Length > 0)
                    {
                        myReqStream.Write(buffer, 0, buffer.Length);
                        buffer = myReader.ReadBytes(2048);
                    }
                }
            }
 
            string footer = String.Format("\r\n--{0}--\r\n", boundary);
            byte[] f = System.Text.Encoding.UTF8.GetBytes(footer);
            myReqStream.Write(f, 0, f.Length);
        }
    }
ShadowInject вне форума Ответить с цитированием
Старый 22.03.2015, 20:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx
Годится для начала?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2015, 20:17   #3
ShadowInject
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx
Годится для начала?
Нет. Для начала бы сгодился толковый мануал, с коментрариями к коду, по загрузке файлов на сервер.
ShadowInject вне форума Ответить с цитированием
Старый 23.03.2015, 21:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а... На сервер... Сорри ступил.
Тогда предлагаю проанализировать такие примеры: http://stackoverflow.com/questions/5...part-form-data
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
99% загрузка ЦП при idhttp1.Get('http://www.zooportal-ekb.ru') , у Вас то же так? bakanaev Работа с сетью в Delphi 9 10.11.2012 19:48
HTTP загрузка части KoBRaAndrey Работа с сетью в Delphi 1 30.05.2010 14:57
Загрузка изображений с http One.Love Общие вопросы Delphi 1 10.03.2008 08:36
загрузка текста с http в мемо benjaminfran Работа с сетью в Delphi 3 05.03.2008 13:57
Загрузка изображения с http Рустам Работа с сетью в Delphi 1 04.02.2008 18:28