使用ASP将文件上载到服务器.NET和C#

Upload a file to a server using ASP.NET and C#

本文关键字:服务器 NET 上载 ASP 文件 使用      更新时间:2023-12-31

我是表单的新手,正在努力了解正在发生的事情。我看了很多问题和教程,但在某些方面感觉不清楚。

到目前为止,我已经在aspx页面中创建了以下表单:

<form id="uploadbanner" enctype="multipart/form-data" method="post" action="#">
    <span class="txtSmallGrey fl" style="display:block; width:200px; margin:15px; margin-bottom:2px">
        <%= oUtils.GetContentText("Collect_Config_upload_sound") %>
    </span>
    <input type="file"  name="SoundFile" id="SoundFile" style="margin:15px; margin-bottom:2px">        
    <input type="submit" value="Upload" id="submit" style="float:left; margin-left:245px; margin-top:1px; height:20px;">    
</form>

我在页面顶部有以下脚本:

<%
        if(Request.Form["SoundFile"] != "")
        {
            HttpPostedFile file = Request.Files["SoundFile"];
            string fname = Path.GetFileName(file.FileName);
            file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
        }
%>

我对AJAX有一个合理的理解,所以其中一些对我来说似乎很熟悉

现在来解释一下我的理解:

该表单已声明并被赋予"uploadbanner"的id。当我传输文件时,我必须包含"enctype…"我发帖是因为它更安全、更灵活。

动作术语告诉表单投递到哪里。在这种情况下,我已经将C#代码放在页面的顶部,因此不需要包含asp.net页面地址来处理这一问题。如果我这样做了,我会包括一个asp.net页面,就像我为AJAX做的一样(我想?)。

表单标记中包含input标记的任何内容都将发布在表单中,并发送名称和值。

当按下提交按钮时,表单将提交给服务器端代码进行处理。到目前为止,我觉得我明白发生了什么。

现在我觉得不太清楚的部分,

  • 当按下"提交"按钮时,C#代码是这样的吗页面顶部的字段将被激活,因此如果空白它不会有任何作用
  • 如果按钮被按下多次,表格会是提交多次
  • 如果是这样的话,那么这和AJAX的方式差不多?,文件将简单地传递到C#代码,在那里我可以使用它
  • 我的最后一个问题是,我能用替代表格提交表格吗提交按钮的方法,例如我可以制作一个普通的JavaScript按钮吗并告诉它提交表格

是不是当按下"提交"按钮时,页面顶部的C#代码将被激活,因此如果字段为空,它将不会执行任何操作

是的,每次加载你的页面时,它都会运行C#代码,人们会假设如果你提交表单,它会检查发布的表单数据。最好检查HTTP标头

如果多次按下按钮,表格会被多次提交吗

是,表单将被多次提交

如果是这样,那么这与AJAX的方式非常相似?,文件将简单地传递给C#代码,从那里我可以用它做我需要的事情

这在HTTP请求的意义上是类似的,但你在页面上发布了一个附加的文件,然后C#通过运行请求来检查页面是否附加了文件。表单,然后请求。将文件和帖子发送到服务器

我的最后一个问题是,我可以使用提交按钮的替代方法提交表格吗?例如,我可以制作一个普通的JavaScript按钮并告诉它提交表格吗

您所说的普通JavaScript按钮是什么意思?您不必使用提交按钮。只要传入的文件和页面已加载,代码仍将运行。我有一个方法,当我发布到HTTPHandler时。下面的代码片段:

public void ProcessRequest(HttpContext context)
 {
    context.Response.ContentType = "text/plain";
    HttpPostedFile postedFile = context.Request.Files["Filedata"];
    string filename = postedFile.FileName;
    var Extension = filename.Substring(filename.LastIndexOf('.') 
    + 1).ToLower();
    string savepath =HttpContext.Current.Server.MapPath("/images/profile/");
    postedFile.SaveAs(savepath + @"'" + user.uid + filename);
 }

因此,当提交时,我指向HttpHandler.ashx,这是一个实现IHttpHandler接口的类,它反过来获得当前上下文。

相关文章: