Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Закачка на сервер через страницу


Автор: Zorro 26.1.2004, 20:04
Мне нужно сделать страницу, на которой есть поле пути по локальной машине и кнопки закачки
Вот я пишу:
Код
System.Net.WebClient client = new System.Net.WebClient();
client.UploadFile(@"http://localhost/WebT/", "POST", @"D:\Logo.jpg");

По-идее этим он должен файл D:\Logo.jpg закачать в папку сервера http://localhost/WebT/. Но при попытке выполнить это, возникает ошибка 405:
Код
The remote server returned an error: (405) Method Not Allowed

Я зашёл в настройки IIS, разрешил для этой папки (и узла) полный доступ любому пользователю - вплоть до записи. Всё равно вылетает это сообщение.
не подскажите как это пройти? Или это я что-то не правильно делаю?

Автор: IZ@TOP 28.1.2004, 10:43
Конечно не правильно, сам подумай, как ты на сервер через http закачаешь файл? Попробуй через ФТП.

Автор: stab 31.1.2004, 13:55
Ваще-то так делать можно smile.gif тока есть несколько "но":

1. На сервере должна быть скрипт (программа) которая принимает запросы в формате POST. Именно он этот скрипт и должен сохранять файл. Т.е. метод UploadFile это просто удобный способ передавать файлы в формы.
2. Надо указывать полный путь к скрипту, т.е. не http://www.server.com/ , а http://www.server.com/default.aspx. Это надо делать даже в том случае, когда скрипт прописан, как скрипт по умолчанию для каталога.

Автор: stab 31.1.2004, 13:57
Кстати, в HTTP 1.1 предусмотрен специальный метод передачи PUT, не знаю только реализовывает ли его хотя бы один сервер.

Автор: Zorro 2.2.2004, 18:17
Цитата
Конечно не правильно, сам подумай, как ты на сервер через http закачаешь файл? Попробуй через ФТП.

Я бы с радостью, но у меня ФТП порт закрыт, а открыть нельзя - не разрешают...
Цитата
1. На сервере должна быть скрипт (программа) которая принимает запросы в формате POST. Именно он этот скрипт и должен сохранять файл. Т.е. метод UploadFile это просто удобный способ передавать файлы в формы.

А как его писать? Был бы рад примеру smile.gif
Цитата
2. Надо указывать полный путь к скрипту, т.е. не http://www.server.com/ , а http://www.server.com/default.aspx. Это надо делать даже в том случае, когда скрипт прописан, как скрипт по умолчанию для каталога.

Т.е. вот как-раз этот скрипт и сохраняет полученный файл?

Автор: stab 4.2.2004, 23:28
Цитата
А как его писать? Был бы рад примеру


у тебя какой сервер?

Цитата
Т.е. вот как-раз этот скрипт и сохраняет полученный файл?

угу, он самый

Автор: IZ@TOP 8.2.2004, 15:30
посмотрел я в книжках, но что то там о загрузке файлов через aspx страницу ни чего не написано ... наверное нужно просто напросто использовать обычную форму, читать из поля file данные посланные пользователем, а потом сохранять.

Автор: stron 8.2.2004, 21:18
Попробуй так:

<html>
<body>

<script language="vb" runat="server">
Sub fn_upload(sender as object, E as EventArg)
UploadFile.PostedFile.SaveAs(server.MapPath("upload.jpg"))
End Sub
</script>
<form enctype="multipasrt/form-data" runat="server">
<table align=center>
<tr><td>
Select a file:
<input id="UploadFile" type="file" runat="server">
</td></tr>
<tr><td>
<asp:button Text="click to Upload" OnClick="fn_upload" runat="server"/>
</td></tr>
</table>
</form>
</body>
</html>

Взято с dotsite.spb.ru

Автор: IZ@TOP 9.2.2004, 13:34
stron, во во, именно об этом я и говорю wink.gif

Автор: stab 9.2.2004, 15:54
Цитата

<form enctype="multipasrt/form-data" runat="server">


ошибочка вкралась, должно быть:

<form enctype="multipart/form-data" runat="server">

Автор: stron 9.2.2004, 17:44
2 cully
Конечно, ошибка,
на dotsite.spb.ru очень часто бывают опечатки


Автор: Zorro 16.2.2004, 19:00
Пасиба, работает, только ещё одна ошибка:
Цитата
Sub fn_upload(sender as object, E as EventArg)

Забыли буковку "s" перед закрывающей скобкой...

Автор: Zorro 16.2.2004, 19:16
А можно чуть-чуть подругому (так, как мне кажеться, удобнее):
1. Код в aspx:
Код

<HTML>
<body>
 <form enctype="multipart/form-data" runat="server" ID="Form1">
  <table align="center">
   <tr>
    <td>Select a file: <input id="UploadFile" type="file" runat="server" NAME="UploadFile">
    </td>
   </tr>
   <tr>
    <td>
     <P>
      <asp:button Text="click to Upload" runat="server" id="Button1" /></P>
     <P>
      <asp:Label id="Label" runat="server">Label</asp:Label></P>
    </td>
   </tr>
  </table>
 </form>
</body>
</HTML>

2. А вот что делает кнопочка:
Код
private void Button1_Click(object sender, System.EventArgs e)
 {
  Label.Text = this.Request.Files.Count.ToString();
  this.Request.Files[0].SaveAs(this.Request.PhysicalApplicationPath + "1.jpg");
 }

Автор: Gorlum 11.5.2005, 15:38
Подскажите, что нада сделать чтобы при этом мона было выбрать на клиентской тачке фаил, потому что при написании такого:

Код

...
protected System.Web.UI.HtmlControls.HtmlInputFile fAddFile1;
...
fAddFile1.PostedFile.SaveAs(@"C:\\Inetpub\\wwwroot\\admin\\Temp\\" + fAddFile1.Value);
...


fAddFile1.Value возвращает в IExplorer`е весь путь файла с клиентской тачки, в фаер фоксе токо имя файла (тогда все прикрасно сохраняет).

скажите как получить имя загружаемого файла без пути, ПОЖАЛУЙСТА!!!!
Зарание благадарю.

Автор: mr.DUDA 11.5.2005, 16:01
Модератор: Пожалуйста, один топик - один вопрос. Необязательно подымать прошлогодние темы для того, чтобы получить ответ на новый вопрос.


Автор: Gorlum 11.5.2005, 18:54
Спасибо, сделал сам.
Если бы я написал не со старой темы то меня бы матюгали шо такая тема уже поднималася, пользуйся поиском, извините болше небуду такое делать, буду после поста 10 раз с кемто прирекаться

Автор: mr.DUDA 12.5.2005, 09:39
Ваш вопрос звучал так:
Цитата
"скажите как получить имя загружаемого файла без пути"


А вопрос, заданный в данной теме, стоял так: "как написать страницу с полями для выбора файла".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)