Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма с переносов файлов на FTP 
:(
    Опции темы
Geny_K
Дата 1.6.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 31.5.2007

Репутация: нет
Всего: нет



Добрый день столкнулся со следующей проблемой:

Было необходимо записывать файлы на FTP для этого пользовался следующим скриптом:

Код

using System;
using System.IO;
using System.Net;
using System.Text;

namespace Examples.System.Net
{
    public class WebRequestGetExample
    {
        public static void Main ()
        {
            // Get the object used to communicate with the server.
          FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://логин:пароль@69.16.208.115/b.txt");
            request.Method = WebRequestMethods.Ftp.UploadFile;

            
            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader("D:/b.txt");
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    
            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

    
            response.Close();
            }
        }


Модератор: Пользуйтесь тэгом code

Файл на FTP заливается, но при этом теряются все русские символы. Пробовал заливать бинарники, заливаются с ошибкой (размер залитого на FTP бинарника отличается от размера исходного).

Ошибка возникает видимо тут    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
т.к    request.ContentLength = fileContents.Length; тут значении длинны файла уже не правильное (русские буквы пропускает).

Пробовал писать так  byte [] fileContents = Encoding.GetEncoding(1251).GetBytes(sourceStream.ReadToEnd()); эффект один  и тот же.


Это сообщение отредактировал(а) Partizan - 12.5.2009, 12:06
PM MAIL   Вверх
Gelis
Дата 1.6.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 26.10.2006
Где: Брест

Репутация: 2
Всего: 4



Попробуйте
Код

StreamReader sourceStream = new StreamReader("D:/b.txt", Encoding.GetEncoding(1251));
string str=sourceStream.ReadToEnd();

PM MAIL   Вверх
HellMasterHaiL
Дата 1.6.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: нет
Всего: 1



попробуй ручками указать кодировку для стриредера windows-1251

сори, опоздал с ответом \=-)


Это сообщение отредактировал(а) HellMasterHaiL - 1.6.2007, 15:35
PM MAIL ICQ   Вверх
CYBERDREAM
Дата 7.11.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Приветствую Народ. Тоже возникла проблемка с переносом файлика. У принтера есть фтпшник, и в определенную папочку надо залить файлик со своего харда, (Логин "root" а пароля нет, через тотпал все пашет как часы) и  пишу следующее:
Код

                FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create("ftp://root:@192.168.0.7/dest/d1prn");
                ftp.Method = WebRequestMethods.Ftp.UploadFile;

                StreamReader sr = new StreamReader("c:/test.gpl");
                byte[] by = Encoding.UTF8.GetBytes(sr.ReadToEnd());
                sr.Close();
                ftp.ContentLength = by.Length;

                Stream req = ftp.GetRequestStream(); // >>>>> Вот здесь выскакивает ошибочка: The requested FTP command is not supported when using HTTP proxy.
                req.Write(by, 0, by.Length);
                req.Close();

                FtpWebResponse fwr = (FtpWebResponse)ftp.GetResponse();
                richTextBox1.Text = fwr.StatusDescription.ToString();
                fwr.Close();


При чем ошибочка (The requested FTP command is not supported when using HTTP proxy.) выскакивает вне зависимости от того, подлючен принтер или нет. Где то есть моя вина в написанном коде? 
 smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
0000
Дата 7.11.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: 2
Всего: 5



вообще тут проблема несколько в другом..
дело в том, что по стандарту FTP вообще не работает с файлами, имеющими русские имена
тут все зависит от того, какой FTP-сервер установлен..
например, proftpd некорректно работает с файлами, содержащими в имени букву "я" (там обрезается буква я и следующая за ней), для этих проблем патчи писали...

есть еще сервер vsftpd, но он практически всегда работает с кодировкой UTF-8, но раз ты сообщения шлешь из винды, они идут в win-1251. Для того, чтобы сервер понимали все клиенты, он должен при обмене сообщениями с клиентом автоматически перекодировть их из UTF-8 в win-1251 и обратно.

тут вроде тоже есть патчи и примеры как это сделать..но это именно работа сервера...

главное в том, что это сервер на unix.. если будет сервер стоять на винде, он будет непосредственно работать в win-1251 и тут уже таких проблем не возникнет..

у меня у самого были проблемы с именами файлов - пришлось выкручиваться тем, что имя файла конвертирую в циферный по своему алгоритму, а истинное имя пишу внутрь файла, а при получении переконвертирую обратно.
PM MAIL ICQ   Вверх
CYBERDREAM
Дата 7.11.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Файлы полностью на инглише, хотя возможно нужно будет и русские буковки кидать. Но когда я кидаю файлы через Тотал, всё пашет нормально. Вряд ли загвоздка в кодировочке


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
0000
Дата 7.11.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: 2
Всего: 5



вообще мой ответ относился к первому посту..
а по поводу ошибки..
мож тогда прокси явно убрать типа ftp.Proxy = null;
PM MAIL ICQ   Вверх
CYBERDREAM
Дата 7.11.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Thx, все пошлло. Но теперь уже другая трабла: пишет 
Код

550 directory doesn't exist or no permission

но это уже проблема такая же как и у експлорера (а тотал и командная строка все верно открывают). Но это уже др. вопрос. 
Спасибо: 0000

Это сообщение отредактировал(а) CYBERDREAM - 7.11.2007, 12:32


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
LLlaMaH
Дата 12.5.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



Спасибо за решение.

Это сообщение отредактировал(а) LLlaMaH - 12.5.2009, 11:45
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.