원하는 수의 파일을 업로드하는 기능을 실현하려면 버튼을 클릭하여 이전에 네트워크 하드 드라이브에서 본 파일 업로드 상자를 추가하십시오. JavaScript를 사용하여 업로드 파일 컨트롤을 추가하는 방법을 알고 있습니다. 문제는 Html 컨트롤이 추가되고 서버 측에서 파일을 가져오는 방법을 모른다는 것입니다.
그래서 Google에서 "ASP.NET 다중 파일 업로드"를 검색했는데 실제로 "ASP.NET에서 다중 파일 업로드 구현"이라는 기사를 발견했습니다. 해당 기사는 VB.NET에서 구현되었으며 기능은 정확히 동일했습니다. 저는 주로 클라이언트가 업로드한 파일을 서버가 어떻게 얻는지 알고 싶었습니다. 기사의 코드를 읽어보니 System.Web.HttpContext.Current.Request.Files에 파일이 포함되어 있다는 것이 밝혀졌습니다. C#을 사용하여 처음에는 괜찮을 것이라고 생각하여 간단한 코드를 작성했지만 예기치 않게 3개의 이미지를 업로드한 후 System.Web.HttpContext.Current.Request.Files에서 0개의 파일 형식을 반환했습니다.
왜인지는 모르겠지만 코드가 너무 간단해서 틀릴 리가 없습니다. 그러다가 구글 검색 결과에서 다른 여러 기사를 찾아보니 제가 본 첫 번째 기사는 그렇지 않았습니다. 원본 작업은 작성자의 웹사이트에 두 가지 버전이 있는데, 하나는 VB.NET이고 다른 하나는 C#입니다. 이제 원본 코드를 직접 작성할 필요가 없습니다. 로컬에서 실행하면 작동하는데 왜 내가 작성한 코드가 작동하지 않습니까? 제가 쓴 코드와 기사에 나온 코드의 차이점을 반복적으로 비교하고 여러 곳을 시도해 보았는데 결국 다른 곳과 아무런 관련이 없다는 것을 알게 되었습니다. 그 이유는 <form id="form1" runat="server" enctype="이었습니다. multipart/form-data"> enctype 속성, VS 2005에서 생성된 페이지에는 이 속성이 없지만 기사 예제에는 있습니다. 나중에 enctype="multipart/form-data" 및 System.Web.HttpContext.Current.Request를 추가했습니다. .Files 가 되었습니다. 정상적으로 얻을 수 있는 파일 개수입니다.
아마도 VS 2003에서 구축된 페이지에는 기본적으로 이 속성이 있을 것입니다. 그렇지 않으면 그러한 중요한 속성의 작성자가 기사에서 이를 언급했을 것입니다.
내가 만든 테스트 코드:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Demo._Default" %>
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<스크립트 언어="자바스크립트">
함수 추가파일()
{
var str = '<INPUT type="file" size="50" NAME="파일">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
</script>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="서버">
<title>제목 없는 페이지</title>
</head>
<본문>
<form id="form1" runat="server" enctype="multipart/form-data">
<input type="button" value="추가" onclick="addFile()">
<input onclick="this.form.reset()" type="button" value="재설정(재설정)">
<asp:Button Runat="server" Text="Upload" ID="Upload" OnClick="Upload_Click1" ></asp:Button>
<div id="내파일">
<입력 유형="파일" 이름="파일" />
</div>
</form>
</body>
</html>
시스템 사용;
System.Data 사용;
System.Configuration 사용;
System.Collections 사용;
System.Web 사용;
System.Web.Security 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.WebControls.WebParts 사용;
System.Web.UI.HtmlControls
네임스페이스 데모
사용
{
공개 부분 클래스 _Default : System.Web.UI.Page
{
protected void Page_Load(개체 전송자, EventArgs e)
{
}
protected void Upload_Click1(객체 전송자, EventArgs e)
{
HttpFileCollection _files = System.Web.HttpContext.Current.Request.Files;
for (int i = 0; i < _files.Count; i++)
{
_files[i].SaveAs(Server.MapPath("~/Files/" + _files[i].FileName));
}
}
}
}
http://bg5sbk.cnblogs.com/archive/2006/06/11/mulitfileuploadtest.html