Загрузить файл на сайт aspx с помощью WebClient - PullRequest
2 голосов
/ 01 апреля 2011

У меня есть веб-сайт aspx, и я хочу загрузить на него файл. Файл обрабатывается позже, поэтому мне нужно добавить некоторую дополнительную информацию.

Это веб-сайт, который мне нужен:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Upload.aspx.cs" Inherits="ABC.Web.Upload" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    <input type="file" id="File1" name="File1" runat="server" />
    <input type="text" id="FileId" name="FileId" runat="server" />
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    </form>
</body>
</html>

Это (и код позади) работает очень хорошо, когда вы используете браузер и нажимаете на форму. Но я хочу загрузить файл, используя WebClient из кода C #. Мне не нужно использовать WebClient, поэтому я открыт для других предложений. Я также могу изменить файл upload.aspx, чтобы он мне подходил, нет требования, чтобы он работал из браузера, но это единственный пример, который у меня работает.

Глядя на fiddler (я только начал его использовать, поэтому, возможно, пропустил его), я не мог понять, как создать такой запрос из кода.

В данный момент при использовании WebClient я указываю адрес и локальное имя файла. У меня есть точка останова в коде на моем сайте, но File1 и FileId не установлены (как и ожидалось).

Как мне изменить веб-сайт и как использовать WebClient для эффективной загрузки?

РЕДАКТИРОВАТЬ: Только что узнал о Request.Files, который даст мне файл, но как насчет других полей?

1 Ответ

1 голос
/ 01 апреля 2011

Многие способы сделать это проще всего - установить File1 и Field как часть строки запроса в вашем WebClient. Тогда на стороне сервера у вас должны быть эти значения в объекте Request.

myQueryStringCollection.Add("File1",yourFile1);
myQueryStringCollection.Add("FileId",myFileId); 
myWebClient.QueryString = myQueryStringCollection;

Обратите внимание, не делайте этого, если вы пытаетесь сохранить эту информацию в безопасности и используете ssl. В этом случае добавьте его к публикуемым данным формы.

...