Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка файла в фалохранилище

2.1K
30 января 2007 года
Ariman
102 / / 20.10.2005
[Vb.NET]
Доброго времени суток, уважаемые форумцы! вы ни один раз выручали, толкали к мыслям меня, спасибо вам огромное!
Надеюсь подскажите и сейчас. :)

Подскажите в каком направлении копаться, необходимо загружать файл с машины на публичные файлохранилища. Каким образом можно организовать загрузку. ТОесть файл выбрали, а каким образом отгружать его на сервер? На всех серверах по разному? Если да, тока как узнать метод которым передаются файлы на том или ином сервере.

Заранее спасибо за ответы, ссылки на эту тематику.
9.0K
01 марта 2007 года
Shit_Happenes
58 / / 05.10.2006
Цитата: Ariman
[Vb.NET]
ТОесть файл выбрали, а каким образом отгружать его на сервер?


Преобразуй файл к массиву byte[] и вперёд.
Только на сервере должен быть сервис зарегистрирован для remoting.

Цитата: Ariman
[Vb.NET]
... тока как узнать метод которым передаются файлы на том или ином сервере.


Всё зависит как ты сервис организовал.

273
01 марта 2007 года
3A3-968M
1.2K / / 22.12.2005
Вот неплохо бы знать, по какому протоколу данные хочешь на сервер заливать. В основном это FTP, с ним работать не сложно (реализации на C# есть в инете, на крайняк подкинуть могу).
2.1K
16 марта 2007 года
Ariman
102 / / 20.10.2005
Я имею ввиду хранилища а-ля rapidshare, и др. у которых есть возможность загрузки файлов через веб-морду.

Протокол насколько я понимаю - hhtp

Спасибо за проявленный интерес и ответы.
273
16 марта 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: Ariman
Я имею ввиду хранилища а-ля rapidshare, и др. у которых есть возможность загрузки файлов через веб-морду.

Протокол насколько я понимаю - hhtp

Спасибо за проявленный интерес и ответы.


Объекты HttpWebRequest и HttpWebResponse тебе помогут, сначала создать запрос: объект HttpWebRequest при помощи HttpWebRequest.Create("www.blabla.ru/files"), потом пишешь в GetRequestStream поток байтов, из которого втой файл состоит

2.1K
23 марта 2007 года
Ariman
102 / / 20.10.2005
Готов сформулировать человеческим языком что нужно. Извиняюсь, но что-то кучу всего перечитал, и только сейчас понял всю суть вопроса.

Необходимо просто посылать post-запрос c параметрами, на VB Это делается так, насколько я понял:
Код:
Winsock1.Protocol = sckTCPProtocol
Winsock1.Connect "имя_сервера", 80
While Not Winsock1.State = 7
DoEvents
Wend

Parametrs="параметр1=значение&параметр2=значение"
Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf
Winsock1.SendData "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Winsock1.SendData "Host: имя_сервера" & vbCrLf
Winsock1.SendData "Content-Length: " & len(Parametrs) & vbCrLf & vbCrLf
Winsock1.SendData Parametrs & vbCrLf


Думаю что мне необходимо воплотить совю идею сначала на vb а потом посмотреть в VB.NET. Весь вопрос в том, что нужно еще и получить ответ сервера после того как файл загрузился.

Скажите, я в правильном направлении?
2.1K
23 марта 2007 года
Ariman
102 / / 20.10.2005
Отбой, пока разобрался с HttpWebRequest и HttpWebResponse. Спасибо за наводку. Дальше пока что сам. :)
2.1K
05 апреля 2007 года
Ariman
102 / / 20.10.2005
Более менее разобрался. Только вот не могу нормально передать параметры.

Есть поле для выбора файла для загрузки в форме имя его filename и еще пара параметров. Как их вставить в запрос?

прим: string postdata = "filename=C:\\win.txt&name2=qwerty";

как передаются парметры, как правильно написать?

Заранее спасибо за внимание и ответы.
273
06 апреля 2007 года
3A3-968M
1.2K / / 22.12.2005
Формат такой:
http :// <url>.<domain>/<sub_url>?<name1>=<value1>&<name2>=<value2>
Например:
http :// www. vasya. ru/page2.html?login=johny&id=56
Потом эту строку скармливаешь в HttpWebRequest
2.1K
06 апреля 2007 года
Ariman
102 / / 20.10.2005
Спасибо, насколько я понимаю это GET, а мне POST нужен. Или я ошибаюсь..?
2.1K
08 апреля 2007 года
Ariman
102 / / 20.10.2005
У меня получился след запрос, проснифил его:

Код:
------------8c947961191233a
Content-Disposition: form-data; name="sfile"; filename="win.txt"
------------8c947961191233a
Content-Disposition: form-data; name="maxFileSize"

30720
------------8c947961191233a
Content-Disposition: form-data; name="agree"

1
------------8c947961191233a
Content-Disposition: form-data; name="x"

67
------------8c947961191233a
Content-Disposition: form-data; name="y"

10
------------8c947961191233a
Content-Disposition: form-data; name="action"

storeFile
------------8c947961191233


А при снифе броузера, при загрузке такого же файла такой:

Код:
-----------------------------3219265987165
Content-Disposition: form-data; name="maxFileSize"

30720
-----------------------------3219265987165
Content-Disposition: form-data; name="action"

storeFile
-----------------------------3219265987165
Content-Disposition: form-data; name="sfile"; filename="win.txt"
Content-Type: text/plain

ывапывапывап
-----------------------------3219265987165
Content-Disposition: form-data; name="agree"

1
-----------------------------3219265987165
Content-Disposition: form-data; name="x"

67
-----------------------------3219265987165
Content-Disposition: form-data; name="y"

10
-----------------------------3219265987165--


И сервер в ответ в моей программе выдает что файл не прикреплен. Меня смущает след строчка:
 
Код:
Content-Type: text/plain

ывапывапывап


Каким-то образом читается файл и передается, и тут же определяется контент-тайп насколько я понимаю. Как добавить чтение файла. :)

Делаю след образом:

Код:
string fileName;
           string siteURL="http://site/upload/";
           StreamWriter sw = null;
           string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
           

           fileName = Path.GetFullPath("C:\\win.txt");
 
           HttpWebRequest req = (HttpWebRequest)WebRequest.Create(siteURL);

           

           string postdata = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"sfile\"; filename=\"" + Path.GetFileName(fileName) + "\""+"\r\nContent-Disposition: form-data; name=\"sfile\"; filename=\"" + Path.GetFileName(fileName) + "\"" "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"maxFileSize\"" + "\r\n\r\n30720" + "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"agree\"" + "\r\n\r\n1" + "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"x\"" + "\r\n\r\n67" + "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"y\"" + "\r\n\r\n10" + "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"action\"" + "\r\n\r\nstoreFile" + "\r\n--" + boundary + "\r\n";

           
           
           req.Method = "POST";
           req.ContentLength = postdata.Length;
           req.ContentType = "multipart/form-data; boundary=" + boundary;
           req.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
           req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3";
           req.Referer = "http://sit/upload";


           sw = new StreamWriter(req.GetRequestStream());

           byte[] sendbuffer = Encoding.UTF8.GetBytes(postdata);

           sw.Write(postdata);
           sw.Close();

            WebResponse resp = (HttpWebResponse)req.GetResponse();
            StreamReader srData = new StreamReader(resp.GetResponseStream());

          string outHtml = srData.ReadToEnd();
           richTextBox1.Text= outHtml;
           resp.Close();
           srData.Close();


Может необходимо делать все совсем по другому?
273
12 апреля 2007 года
3A3-968M
1.2K / / 22.12.2005
Тип контента должен указываться при отправке файла на сервер, в ответе серверу должно помимо заголовкой отправляться ещёи поток байтов, который является файлом. Посмотри отправляемые данные, так ли это? Может серверу нужен какой-то свой формат запроса
2.1K
13 апреля 2007 года
Ariman
102 / / 20.10.2005
Есть веб-морда. Там Поле для файла, и галка с согласием о соглашении. И еще скрытое поле.

Вот я вот таким образом, как выше пытаюсь загружать через форму. Правильно ли это я понять не могу. :(
2.1K
14 апреля 2007 года
Ariman
102 / / 20.10.2005
Мне кажется я в корне все делаю не правильно.. :(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог