Jump to content

[Resolu] [C#] Upload / Download fichier SQL server


NiTrOuS

Recommended Posts

Voilà j'ai trouvé, il suffit d'utiliser les BLOB:

Backup:

				
FileStream FileStream1 = new FileStream(@PathAndName, FileMode.Open, FileAccess.Read);
BinaryReader BinaryReader1 = new BinaryReader(FileStream1);
byte[] FileToSave = BinaryReader1.ReadBytes((int)FileStream1.Length);
SqlParameter ParameterSavedFile = Command.Parameters.Add("@ProcedureSavedFile",SqlDbType.Binary,FileToSave.Length,"SavedFile");
//Déclaration de la connexion à la DB en allant chercher les paramètres dans le fichier de configuration
SqlConnection Connection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionParameter"]);
//Déclaration de la fonction à exécuter
SqlCommand Command = new SqlCommand(StoredProcedure,Connection);
//Déclaration du type de fonction à exécuter
Command.CommandType = CommandType.StoredProcedure;
ParameterSavedFile.Value = FileToSave;
//Ouverture de la connexion à la DB
Connection.Open();
//Exécution de la procédure embarquée
SqlDataReader Reader = Command.ExecuteReader();
//Fermeture du reader
Reader.Close();
//Fermeture de la connexion à la DB
Connection.Close();
//Fermeture du file stream
FileStream1.Close();
//Fermeture du binary reader
BinaryReader1.Close();

Restore:

public void RestoreFile(int recordingid)
	{
		try
		{
			// Chaîne de connexion
			string ConnectString = ConfigurationSettings.AppSettings["ConnectionParameter"];
			// Objet connection
			SqlConnection Connection = new SqlConnection(ConnectString);
			// Ouverture de la connexion
			Connection.Open();
			SqlCommand Selection = new SqlCommand("SELECT SavedFile FROM Recording WHERE RecordingId = " + recordingid, Connection);
			FileStream FileStream1;
			BinaryWriter BinaryWriter1;
			int BufferSize = 100;
			byte[] OutByte = new byte[BufferSize];
			long ReturnValue;
			long StartIndex = 0;
			SqlDataReader MyReader = Selection.ExecuteReader(CommandBehavior.SequentialAccess);
			while (MyReader.Read())
			{
				// Création de fichier pour enregistrer ce qui est récupéré
				FileStream1 = new FileStream(@"C:\" + recordingid + ".txt",FileMode.OpenOrCreate, FileAccess.Write);
				BinaryWriter1 = new BinaryWriter(FileStream1);
				// Reset le byte de départ pour le nouveau BLOB
				StartIndex = 0;
				// Lecture des byte et conservation du nombre de byte retourné
				ReturnValue = MyReader.GetBytes(0, StartIndex, OutByte, 0, BufferSize);
				// Continue à lire et à écrire aussi longtemps qu'il y a de byte dans le buffer
				while (ReturnValue == BufferSize)
				{
					BinaryWriter1.Write(OutByte);
					BinaryWriter1.Flush();
					// Repositionnement de l'index de début à la fin du dernier buffer et remplit le buffer
					StartIndex += BufferSize;
					ReturnValue = MyReader.GetBytes(0, StartIndex, OutByte, 0, BufferSize);
				}
				// Ecriture du buffer restant
				BinaryWriter1.Write(OutByte, 0, (int)ReturnValue);
				BinaryWriter1.Flush();
				// Fermeture du fichier de sortie
				BinaryWriter1.Close();
				FileStream1.Close();
			}
			// Fermeture du reader
			MyReader.Close();
			// Fermeture de la connexion
			Connection.Close();
		}
		catch(Exception ex)
		{
			Console.Error.WriteLine(ex);
		}
	}

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...