Pentru a putea încărca un fişier pe server, adăugăm în pagină un control FileUpload şi un buton
În pagina aspx avem următorul cod:
<div class="div_upload_fisier" >
<h2>Upload un singur fişier</h2>
<em>Alegeţi fişierul</em>:
<asp:FileUpload ID="fisier_1_0" runat="server" />
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Încarcă fişier"
onclick="Button1_Click" />
</div>
Utilizatorul va alege fişierul printr-un click pe browse. După alegerea fişierului pentru upload, la click pe buton, pagina va trimite datele spre server. Metoda PostedFile.SaveAs a unui control FileUpload salveaza fisierul pe disc. Sintaxa pentru un control cu id-ul FileUpload1 este:
FileUpload1.PostedFile.SaveAs("cale_completă_fişier");
Codul C# pentru exemplul aspx de mai sus este următorul:
fisier_1_0.PostedFile.SaveAs(Request.PhysicalApplicationPath + Path.GetFileName(fisier_1_0.PostedFile.FileName));
Metoda SaveAs() trebuie să primească ca parametru un string ce reprezintă calea către fişier + numele fişierului. În cazul de mai sus, Request.PhysicalApplicationPath returnează calea fizică curentă a apicaţiei web, iar Path.GetFileName() returnează numele fişierului ales de utilizator pentru upload. fisier_1_0.PostedFile.FileName conţine calea+numele original al fişierului.
Clasa Path necesită folosirea namespace-ului System.IO. Putem scrie using System.IO sau să procedăm ca în imaginea de mai jos (click dreapta pe cuvântul Path)
Upload dinamic
Pentru a putea face un upload dinamic (adică să lăsăm utilizatorul să aleagă câte fişiere vrea) avem nevoie de puţin javascript.
Codul javascript este următorul (în partea de HEAD)
<script language="javascript" type="text/javascript">
var j=0;
function adauga_doc() {
j++;
var a = document.createElement('input');
var b = document.createElement('br');
a.setAttribute('type', 'file');
a.setAttribute('id', 'fisier_2_' + j);
a.setAttribute('name', 'fisier_2_' + j);
document.getElementById('adauga_documente_div').appendChild
(a);
document.getElementById('adauga_documente_div').appendChild
(b);
}
</script>
Funcţia adauga_doc() va adăuga un control <input type="file"> pentru upload-ul fişierelor. În mod normal acest control necesită ca tag-ul <form> să conţină atributul enctype="multipart/form-data" dar deoarece avem un control FileUpload pe pagină, acel atribut este creat automat de ASP .NET. Se crează elementul input de tip file cu id-ul şi numele unic (prin incrementarea variabilei j) ori de câte ori utilizatorul apasă pe link-ul "încă un fişier". În acest fel vom avea controale cu id şi nume unic pentru a nu exista probleme la încărcare.
În secţiunea body avem următorul cod HTML
<div class="div_upload_dinamic">
<h2>Upload dinamic</h2>
<em>Alegeţi un fişier</em>:
<asp:FileUpload ID="fisier_2_0" runat="server" />
<div id="adauga_documente_div" runat="server"></div>
<a onclick="adauga_doc();" style="cursor:pointer;color:Blue;text-decoration:underline;">Încă un fişier</a><br /><br />
<asp:Button ID="Button2" runat="server" Text="Încarcă fişierele"
onclick="Button2_Click" />
<br />
</div>
Observăm că la elementul <a> avem atributul onclick ce execută funcţia adauga_doc()
Codul C# pentru salvarea fişierelor pe server este următorul:
string nume_fisier;
for (int j = 0; j < Request.Files.Count; j++)
{
if (Request.Files[j].ContentLength > 0)
{
nume_fisier = Path.GetFileName(Request.Files[j].FileName);
Request.Files[j].SaveAs(Request.PhysicalApplicationPath.ToString
() + nume_fisier);
}
}
Request.Files reprezintă colecţia de fişiere încărcate. Parcurgem fişierele încărcate şi le salvăm rând pe rând pe server.
Descărcaţi acest exemplu
Limitarea dimensiunii fişierelor încărcate
Putem modifica dimensiunea maximă pe care o poate accepta ASP .NET la upload-ul fişierelor (implicit e 4 mega bytes). În fişierul web.config căutăm tag-ul <system.web> şi adăugăm următoarea linie
<httpRuntime maxRequestLength="10240"/>
10240 reprezintă 10 mega. Putem modifica valoarea în kilobytes a maxRequestLength.
Niciun comentariu:
Trimiteți un comentariu