2014-11-10 2 views
-1

Я уже несколько дней стучаю головой по этой проблеме и могу использовать некоторую помощь, может быть, свежий набор глаз поможет.Загрузите файл в папку с проверкой проверки JavaScript - ASP.NET

У меня Windows Server 2012, IIS 8.0 и ASP.NET 4.5. Я новичок в IIS и ASP.NET, поэтому, пожалуйста, будьте терпеливы со мной. Веб-сайт, который я пытаюсь создать, позволяет пользователю загружать файлы, которые сначала будут проверяться, чтобы убедиться, что они действительны, а затем будут помещены в папку на веб-сервере.

Я попробовал, чтобы Javascript проверял входные данные перед отправкой формы на сервер. Однако ничего не загружено, поэтому я решил сделать один шаг за раз и просто сделать простую загрузку (без проверки Javascript, пока).

Здесь в настоящее время, как файлы стоят:

upload_page.aspx

<html> 
... 
<script language="Javascript"> 
    function validate() 
    { 
     var filter = <allowed file extensions>; 
     var file1 = document.getElementById("uploadfile1").value; 
     //do the checks 

     if(filter.test(file1)) 
     { 
      returnval = true; 
     } 
     else 
     { 
      returnval = false; 
     } 

     return returnval; 
    } 
</script> 
... 
<body> 
    <form method="post" runat="server" name="upload" enctype="multipart/form-data"> 
     <asp:FileUpload ID="uploadfile1" runat="server" /> 
     <asp:Button ID="btnUpload" runat="server" Text="Upload" onClientClick="btnUpload_Click" /> 
     <asp:Button ID="btnReset" runat="server" Text="Reset" /> 
    </form> 
</body> 
</html> 

upload_page.aspx.cs

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    if(this.uploadfile1.HasFile) 
    { 
     this.uploadfile1.SaveAs("C:\\inetpub\\wwwroot\\uploaded_files\\" + this.uploadfile1.FileName); 
    } 
} 

Если кто-нибудь может сказать мне, что я м делать неправильно было бы очень признателен! Благодарю.

+0

Где 'действие' для' формы'? – melancia

+0

На самом деле, у вас нет ничего в вашей 'форме', чтобы отправить его. – melancia

+0

Ну, я смущен, потому что я взял его из-за ответов в таких вопросах, как [здесь] (http://stackoverflow.com/questions/569565/uploading-files-in-asp-net-without-using-the -fileupload-server-control) и [здесь] (http://stackoverflow.com/questions/3167240/asp-net-file-upload). В любом случае, я вернул его как «action =» upload_page.aspx », и это тоже не сработало. – noblerare

ответ

1

В коде есть некорректная вещь, например, с использованием onClientClick для события нажатия кнопки сервера. Вы можете использовать PostedFile в this.uploadfile1.save...

Correct Полный код

ASPX Часть

<form id="form1" runat="server" enctype="multipart/form-data" method="post" action="upload_page.aspx"> 
    <div> 
     <asp:FileUpload ID="uploadfile1" runat="server" /> 
     <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" /> 
     <asp:Button ID="btnReset" runat="server" Text="Reset" /> 
    </div> 
</form> 

код за

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    if (uploadfile1.HasFile) 
    { 
     string rootpath = @"D:\webfile\"; 
     uploadfile1.PostedFile.SaveAs(rootpath + uploadfile1.PostedFile.FileName); 
    } 
} 

Заменить rootpath с требуемым значением.

+0

Спасибо за ваш ответ. Я внес изменения, но у меня есть ошибка. 'btnUpload_Click' не является членом 'ASP_upload_page_aspx' – noblerare

+0

@noblerare, убедитесь, что у вас есть единственная копия 'btnUpload_Click', и очистите, перестройте свое решение, чтобы убедиться, что ошибки компиляции нет. –

+1

Я проверил и дважды проверил все, но просто не смог заставить файл '.cs' работать. Я закончил просто помещать соответствующий код в '

Смежные вопросы