All pastes #288997 Raw Edit

7 moi

public text v1 · immutable
#288997 ·published 2006-12-22 19:37 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Npgsql;
using NpgsqlTypes;

namespace File_downloader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                NpgsqlConnection conn = new NpgsqlConnection("-----");
                conn.Open();
                NpgsqlCommand commande;
                NpgsqlParameter param;
                commande = new NpgsqlCommand("SELECT syn_notes.titre, syn_notes.pieces_jointes, syn_fichiers.filename from syn_notes LEFT JOIN syn_fichiers ON syn_notes.pieces_jointes=syn_fichiers.id where syn_notes.id=:id", conn);
                param = new NpgsqlParameter(":id", DbType.Int32);
                param.Value = Convert.ToInt32(textBox1.Text);
                commande.Parameters.Add(param);
                commande.Prepare();
                NpgsqlDataReader lecture = commande.ExecuteReader();
                //De par la structure de la base de données, il n'y a qu'un fichier joint par note possible.
                label1.Text = "Aucun fichier lié";
                label2.Text = "";
                while (lecture.Read())
                {
                    toolTip1.Show(lecture.GetValue(0).ToString(), textBox1);
                    label1.Text = lecture.GetValue(2).ToString();
                    label2.Text = lecture.GetValue(1).ToString();
                    button2.Enabled = true;
                }
                conn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            saveFileDialog1.FileName = label1.Text;
            saveFileDialog1.ShowDialog();
        }

        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            int compteur = 0, nombre = 0;
            FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write);
            BinaryWriter bw = new BinaryWriter(new BufferedStream(fs));
            NpgsqlConnection conn = new NpgsqlConnection("---");
            conn.Open();
            NpgsqlCommand commande;
            NpgsqlParameter param;
            //On récupère le nombre de chunks dans la table correspondant à ce fichier.
            commande = new NpgsqlCommand("SELECT count(splitid) FROM syn_contenu_fichiers WHERE fichier=:idfichier", conn);
            param = new NpgsqlParameter(":idfichier", DbType.Int32);
            param.Value = Convert.ToInt32(label2.Text);
            commande.Parameters.Add(param);
            commande.Prepare();
            nombre = Convert.ToInt32(commande.ExecuteScalar());
            while (compteur < nombre)//on récupère et écrit chunk après chunk ...
            {
                progressBar1.Value = (compteur * 100) / nombre;
                progressBar1.Refresh();
                commande = new NpgsqlCommand("select contenu from syn_contenu_fichiers where fichier=" + Convert.ToInt32(label2.Text) + " AND splitid=" + compteur, conn);
                Byte[] result = (Byte[])commande.ExecuteScalar();
                bw.Write(result);
                compteur++;
            }
            progressBar1.Value = 100;
            progressBar1.Refresh();
            MessageBox.Show("Download du fichier terminé avec succès !", "DL OK !", MessageBoxButtons.OK, MessageBoxIcon.Information);
            bw.Flush();
            fs.Close();
            bw.Close();
            conn.Close();
        }
    }
}