Что происходит, когда я использую метод HTTP PUT для загрузки локального файла на сервер? - PullRequest
0 голосов
/ 30 декабря 2010

В моем текущем проекте мое клиентское приложение сначала общается с сервером, и сервер вернул URL загрузки, чтобы я мог загрузить файл, URL выглядит так:

http://www.example.com/folder/filename.cab

* 1005Затем я хочу использовать метод HTTP PUT для загрузки локального файла «c: \ temp \ result.cab» в вышеприведенную локацию.Как я мог это сделать? А кто-нибудь может дать мне подробное описание всего механизма загрузки?

Когда я использую элемент управления загрузкой ASP.NET, я просто нажимаю кнопку обзора, чтобы найти свой файл, и нажимаю кнопку Отправить,а на стороне сервера я просто вызываю SaveAs() метод управления загрузкой.Вот некоторый код:

protected void UploadButton_Click(object sender, EventArgs e)
{
    if(FileUploadControl.HasFile)
    {
        try
        {
            string filename = Path.GetFileName(FileUploadControl.FileName);
            FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
            StatusLabel.Text = "Upload status: File uploaded!";
        }
        catch (Exception ex)
        {
            StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
        }
    }
}

Некоторые вопросы:

  • Кто отвечает за чтение и отправку файла?

  • Что происходит, когда я вызываю FileUploadControl.SaveAs() метод?Сервер извлекает файл из клиента, или клиент отправляет файл на сервер?

  • Я знаю, что HTTP основан на тексте, но мой файл result.cab не текстовый, поэтомуКодировка Base64 перед отправкой?

Большое спасибо.

Обновление:

Как работает метод HTTP PUT?Это на стороне клиента или на стороне сервера?Или взаимодействие обоих как какое-то рукопожатие?

1 Ответ

2 голосов
/ 30 декабря 2010

Для загрузки файла используйте метод UploadFile класса WebClient http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=115

на сервере, когда вы делаете SaveAs, файл уже загружен клиентом (push) и сохранен на сервере во временной папке; вы просто перемещаете файл с помощью вызова SaveAs по указанному пути.

Ваш файл закодирован WebClient и отправлен.

Для более подробной информации вы можете прочитать RFC http://www.faqs.org/rfcs/rfc1867.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...