Redimensionare imagini

Cu ajutorul ASP .NET putem redimensiona o imagine fără ca să se piardă din calitate. Iată mai jos un exemplu de redimensionare a unei imagini. Pentru ca exemplul să funcţioneze, avem nevoie să includem 2 namespace-uri aflate mai jos.



using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

[...]

string file = path; // calea completă către fişier

System.Drawing.Image oImg = System.Drawing.Image.FromFile(file);

System.Drawing.Image oThumbNail = new Bitmap(100, 100, oImg.PixelFormat); /* aici putem trece în locul celor 2 valori de 100 dimensiunea la care dorim să redimensionăm poza (prima valoare este lungimea - width iar a doua înălţimea imaginii - height) */

Graphics oGraphic = Graphics.FromImage(oThumbNail);

oGraphic.CompositingQuality = CompositingQuality.HighQuality;

oGraphic.SmoothingMode = SmoothingMode.HighQuality;

oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;

Rectangle oRectangle = new Rectangle(0, 0, 100, 100); /* dacă sus s-au modificat cele 2 valori de 100, atunci şi aici trecem acele valori */

oGraphic.DrawImage(oImg, oRectangle);

oThumbNail.Save(file, ImageFormat.Jpeg); /* se poate alege formatul imaginii folosind parametrul al doilea - ImageFormat */

oImg.Dispose();

Lucrul cu bazele de date. Executarea unei instrucţiuni SQL

Multe din aplicaţiile ASP .NET realizate vor avea nevoie de acces la o bază de date. Mai jos voi prezenta o metodă pentru conectarea la baza de date din cod şi executarea unei comenzi SQL.

Pentru instalarea serverului SQL precum şi a unui tool de management a bazei de date (pentru a putea crea tabelele şi baza de date vizual) accesaţi această adresă: http://www.microsoft.com/express/Downloads/. Aici puteţi alege SQL Server 2008 Express (Runtime with Advanced Services sau Runtime With Management Tools).

La instalare puteţi alege metoda de conectare la serverul SQL (SQL authentication sau Windows autenthication). Numele serviciului SQL este denumit implicit SQLEXPRESS. Pentru a vedea cum se defineste conexiunea la baza de date, citiţi secţiunea "Conectarea la baza de date" de aici: http://punctnet.blogspot.com/2009/11/webconfig.html.

Executarea unei comenzi SELECT.

private string connectionstring = WebConfigurationManager.ConnectionStrings["nume_conexiune"].ConnectionString; /* conexiunea e definită în web.config, sau pur şi simplu se poate scrie aici string-ul de conectare */

private void conectare()
{

SqlConnection conn = new SqlConnection(connectionstring);
/* definim conexiunea sql*/

conn.Open(); // se deschide conexiunea


string command = "SELECT * FROM nume_tabela";// definim comanda sql

SqlCommand comm = new SqlCommand(command, conn);

SqlDataReader reader;


try
{
reader = comm.ExecuteReader();
while (reader.Read())
{
/*preluare date. Putem prelua primul câmp din rezultatul selectului astfel: reader[0].ToString() sau reader["nume_camp"].ToString() */
}
reader.Close();

}
catch
{
//în caz că avem erori, le putem prelucra aici.
}
finally
{
conn.Close(); //orice s-ar întâmpla, conexiunea se închide.

}
}


În cazul unei instrucţiuni INSERT, UPDATE sau DELETE se procedează astfel:


private string connectionstring = WebConfigurationManager.ConnectionStrings["nume_conexiune"].ConnectionString;

private void executare_sql()
{

SqlConnection conn = new SqlConnection(connectionstring);

conn.Open(); //se poate folosi si aici try...catch

string command = "INSERT INTO ...";

SqlCommand comm = new SqlCommand(command, conn);

comm.ExecuteNonQuery();

conn.Close();
}

web.config

web.config este un fişier XML ce se află în directorul aplicaţiei ASP .NET şi care conţine diverse elemente de configurare a aplicaţiei. Structura fişierului începe cu tag-ul <configuration> iar în interiorul acestuia avem secţiunea <system.web> unde se află partea de configurare a aplicaţiei precum şi secţiunea <appSettings> unde putem să introducem elemente personalizate de configurare.

Ca toate fişierele XML, şi web.config este case-sensitive (tagurile cu acelaşi nume şi litere mici sunt diferite faţă de cele cu litere mari şi acelaşi nume). web.config se află în directorul rădăcină, dar fiecare subdirector al aplicaţiei poate conţine un fişier web.config cu setări adiţionale ce se aplică acelor subdirectoare. De exemplu, putem crea un fişier pentru subdirectorul administrare al aplicaţiei în care să nu permitem accesul persoanelor neautorizate.

Printre cele mai uzuale setări ale fişierului web.config se numără următoarele:

  • Conectarea la baza de date. Să presupunem că avem 20 pagini într-o aplicaţie ASP. NET, fiecare din ele utilizând o conexiune la baza de date. Putem defini o conexiune la baza de date în fişierul web.config care să poată fi folosită în toate paginile. Astfel, dacă modificăm conexiunea, o facem doar într-un singur loc.

    Pentru a defini o conexiune la baza de date în fişierul web.config, folosim următorul cod introdus în secţiunea <configuration> dar înaintea secţiunii <system.web>:

    <connectionStrings>
    <add name="nume_conexiune" connectionString="Data Source=nume_calculator/nume_server_sql;Initial Catalog=nume_baza_de_date;Persist Security Info=True;User ID=user;Password=parola;"
    providerName="System.Data.SqlClient" />
    </connectionStrings>

    Codul de mai sus poate fi folosit în cazul când conexiunea la serverul SQL se realizează folosind autentificarea SQL Server. Dacă se foloseşte autentificarea Windows atunci connectionString se înlocuieşte cu:

    connectionString="Data Source=nume_calculator/nume_server_sql;Initial Catalog=nume_baza_date;Integrated Security=True"

    Pentru a folosi conexiunea în partea de server side a unei pagini folosim următorul cod:

    private string connectionstring = WebConfigurationManager.ConnectionStrings["nume_conexiune"].ConnectionString;


  • Erori personalizate. La întâlnirea unei erori în aplicaţie putem seta ca ASP .NET să redirecţioneze utilizatorul spre o anumită pagină. Următorul cod se poate introduce în web.config în secţiunea system.web:

    <customErrors defaultRedirect="pagina.aspx"/>

    Folosind codul de mai sus, la întâlnirea oricărei erori, ASP .NET va redirecţiona utilizatorul spre pagina.aspx. Putem personaliza şi mai mult paginile la care ajunge utilizatorul în caz de eroare folosind codurile erorilor. De exemplu, 404 este eroarea pentru pagină negăsită, iar 403 este eroarea pentru acces interzis. Putem scrie astfel:

    <customErrors defaultRedirect="pagina.aspx">
    <error> statusCode="404" redirect="eroare404.aspx" />
    <error> statusCode="403" redirect="eroare403.aspx" />
    <customErrors>

    În acest caz, dacă se întâlneşte eroarea pagină negăsită, utilizatorul va fi redirecţionat spre eroare404.aspx, dacă accesul este interzis, utilizatorul va vedea pagina eroare403.aspx, iar în cazul oricărei alte erori se va afişa pagina pagina.aspx

  • Mărimea fişierelor încărcate pe server. Implicit, când facem un upload, ASP .NET respinge fişierele mai mari de 4 MB. Pentru a modifica această limitare, putem introduce în fişierul web.config următoarea linie de cod în secţiunea <system.web>

    <httpRuntime maxRequestLength = "10240" />

    În cazul de mai sus, dimensiunea maximă a fişierului acceptat de server este de 10 MB.

  • Interzicerea accesului în anumite directoare. Interzicerea accesului se poate face foarte simplu folosind tag-ul authorization în secţiunea system.web astfel:

    <authorization>
    <deny users = "?" />
    <authorization>


Cookies





Cu ajutorul unui cookie (nu biscuit sau prăjitură) putem reţine şi folosi anumite date în toate paginile aplicaţiei web. Cookie-urile sunt create pe calculatorul clientului şi nu sunt folosite pentru a stoca date de o dimensiune prea mare. Putem folosi un cookie pentru a stoca de exemplu numele utilizatorului autentificat sau email-ul acestuia.

Un cookie se crează astfel:


HttpCookie cookie = new HttpCookie("date");

cookie["nume"] = nume.Text;

cookie["email"] = email.Text;

Response.Cookies.Add(cookie);



Acest cookie va fi valabil până când browserul rămâne deschis. Dacă vrem să prelungim valabilitatea unui cookie, scriem astfel:


cookie.Expires = DateTime.Now.AddYears(100); // acest cookie e valabil 100 ani


Putem prelua datele din cookie astfel:


string c="";

HttpCookie cookie = Request.Cookies["date"];

if (cookie != null) // verificam daca cookie-ul exista
{
c = "nume: " + (string)cookie["nume"] + " şi email:" + (string)cookie["email"];
}


Singura modalitate de a şterge un cookie este de a-i seta o dată de expirare înainte de data curentă. Codul este:


HttpCookie cookie = Request.Cookies["date"];

cookie.Expires = DateTime.Now.AddDays(-1);

Response.Cookies.Add(cookie);


Descarcă exemplul

Redirectionare si trimiterea informatiilor intre pagini folosind query string






Redirecţionarea către o altă pagină se face folosind instrucţiunea Response.Redirect()


Response.Redirect("default2.aspx?luna="+
DropDownList1.SelectedItem.Value);


Browserul va fi redirecţionat către pagina default2.aspx. ?luna=valoare reprezintă parametrul transmis paginii. Numele parametrului este luna deoarece se află după semnul "?" care denotă începerea parametrilor. Pentru mai mulţi parametri putem scrie ?luna=valoare&anul=valoare

În pagina a 2-a putem prelua valoarea parametrului trimis folosind Request.QueryString[] astfel:


Label1.Text="Luna aleasă este <strong>" + Request.QueryString["luna"].ToString()+"</strong>";


Avantaje: simplu şi rapid.
Dezavantajele: utilizatorii avansaţi pot modifica valorile parametrilor care sunt vizibile şi nu se pot trimite valori mari.

Descarcă acest exemplu