2015-04-21 4 views
0

Я использую C# .net, и я пытаюсь загрузить файл на свой сервер. Я не использую asp .net.Загрузить файл на сервер .Net

Я следовал за This Question, и он, похоже, не работает для меня. Замечание, что этот вопрос был написан еще в 2008 году

Я использую этот код, как показано в приведенном выше вопрос:

File.Copy("zQn69PZUx.png", "\\\\198.57.247.152\\~shiro\\public_html\\new"); 
//tried this also 
File.Copy("zQn69PZUx.png", "\\\\198.57.247.152\\~shiro\\new"); 

Я получаю ошибку:

An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll 
Additional information: The network path was not found. 

Я также попытался используя мое доменное имя и использую путь, как он отображается в браузере, без http://, потому что он жаловался на формат, заявив, что его не принято, например: domain-name.com\\new, и по-прежнему получил ту же ошибку в результате.

Любые идеи, что я могу делать неправильно или лучше решить, как загрузить файл на сервер? Вы можете видеть здесь, что существует путь http://198.57.247.152/~shiro/new/.

+0

Является ли '198.57.247.152' компьютером в вашей локальной сети или у вас есть доступ к нему удаленно? –

+0

@PeterLuu Это общий сервер, который я арендую у компании hostgator. Вот почему подпапка '~ shiro' для моего личного использования –

+0

@Sayka Что вы подразумеваете под' sample'? Это действительная ссылка http://198.57.247.152/~shiro/new/ работает в браузере –

ответ

3

Путь \\ 198.57.247.152 \ ~ shiro \ new - это то, что Microsoft называет Uniform Naming Convention (UNC). Этот тип ресурсов доступен только в сетях с включенным NetBIOS; в основном локальной сети. Проблема в том, что File.Copy работает только в том случае, если у вас есть доступ к ней в вашей сети - поскольку это удаленный сервер, он не сможет найти этот сервер, что приведет к исключению The network path was not found.

http://198.57.247.152/~shiro/new/ следует синтаксису <scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ] который является вызовом Uniform resource locator (URL). Hypertext Transfer Protocol (http) Ресурс типичен для браузеров.

Вы можете решить эту проблему путем использования вместо FTP, чтобы загрузить файл на сервер:

using (WebClient client = new WebClient()) 
{ 
    client.Credentials = new NetworkCredential(ftpUsername, ftpPassword); 
    client.UploadFile("ftp://ftpserver.com/targetpath", "localfilepath"); 
} 

Действительный целевой путь будет что-то вроде: ftp://localhost/samplefile.txt и местный путь_к_файлу должен быть полностью квалифицированным путь_к_файлу.

+0

Да. Я не уверен, что ваш ftp-адрес совпадает с адресом 198.57.247.152, поэтому я использовал заполнители. –

+0

Кажется, что это работает. Я получаю эту ошибку: 'удаленный сервер возвратил ошибку: (553) Имя файла не разрешено.« Я обращаюсь к своей серверной хостинговой компании прямо сейчас, чтобы узнать, в чем проблема. Спасибо за ответ –

+0

Посмотрите на это, если это поможет вам http://stackoverflow.com/questions/9418404/cant-connect-to-ftp-553-file-name-not-allowed –

0

Вы можете загрузить файл, используя код из ответа Питера Луу. Но сначала у вас должен быть доступ к нему.

Для загрузки файла на удаленный сервер вы должны быть пользователем этого и иметь пароль. Это не пароль, который вы используете для входа в панель управления Hostgator. После входа в вашу учетную запись Hostgator появится опция FTP, в которой вы можете настроить учетные записи пользователей FTP. Там вы можете назначить имя пользователя и пароль и которые должны быть применены к коду для загрузки.

И для проверки того, работают ли UserName и Password, Open MyComputer и в адресной строке введите путь FTP (который будет быть чем-то начинающим «ftp: //»). Появляется диалоговое окно с запросом имени пользователя и пароля (если путь действителен). Если вы входите в, см и копировать файлы в окне проводника оттуда, то код будет работать загрузка

enter image description here

Если вы хотите, чтобы получить соответствующий путь, открыть окна проводника и введите ftp://your_domain_name.Примените имя пользователя и пароль, просмотрите путь, который вам нужен, скопируйте его из адресной строки и добавьте его в код.

+0

Учетная запись определенно работает, потому что, если я помещаю неправильный пароль/имя пользователя, я получаю другую ошибку внутри VS2013 –

+0

Это работает в вашем проводнике Windows? – Sayka

+0

Да, я выяснил проблему 1 секунду назад! ему нужно было имя файла в конце, а также в ServerFilePathLocation! –

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