使用WebClient将文件上传到aspx站点

时间:2011-04-01 15:31:50

标签: asp.net file-upload webclient

我有一个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>

使用浏览器并单击表单时,此(以及后面的代码)运行良好。但我想使用C#代码中的 WebClient 上传文件。我不必使用WebClient,所以我愿意接受其他建议。我也可以修改upload.aspx以适合我,不要求它可以在浏览器中运行,但这是我工作的唯一例子。

看着小提琴手(我刚刚开始使用它,所以我可能已经错过了它)我无法弄清楚如何从代码中创建这样的请求。

在使用WebClient的那一刻,我指定了地址和本地文件名。我在我的网站后面的代码中有一个断点,但没有设置File1和FileId(如预期的那样)。

如何修改网站以及如何使用WebClient让上传工作?

编辑:刚刚发现了Request.Files,它会给我文件,但是其他字段怎么样?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将File1和Field设置为WebClient中查询字符串的一部分。然后在服务器端,您应该在Request对象中包含这些值。

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

注意,如果您尝试保护此信息的安全性并使用ssl,请不要这样做。在这种情况下,将其添加到要发布的表单数据中。