Bonjour.

Voici mon premier Service Web en c#. A cette occasion, j'aimerais bénéficier d'un petit coup de main svp.
Je dois uploader un fichier vers mon serveur, celui-ci étant d"coupé en plusieurs morceaux car il est très volumineux !

Imaginons que nous envoyons 5 fichier .sdf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
mon_fichier.sdf.part1
mon_fichier.sdf.part2
mon_fichier.sdf.part3
mon_fichier.sdf.part4
mon_fichier.sdf.part5
voici mon fichier ICheckpointWebService.cs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
 
namespace CheckpointWebWcfService
{
    [ServiceContract]
    public interface ICheckpointWebService
    {
        [OperationContract]
        void UploadFile(RemoteFileInfo request);
    }
 
    [MessageContract]
    public class RemoteFileInfo : IDisposable
    {
        [MessageHeader(MustUnderstand = true)]
        public string FileName;
 
        [MessageHeader(MustUnderstand = true)]
        public long Length;
 
        [MessageBodyMember(Order = 1)]
        public System.IO.Stream FileByteStream;
 
        public void Dispose()
        {
            if (FileByteStream != null)
            {
                FileByteStream.Close();
                FileByteStream = null;
            }
        }
    }
}
et mon fichier CheckpointWebServiceImpl.svc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
 
namespace CheckpointWebWcfService
{
    public class CheckpointWebServiceImpl : ICheckpointWebService
    {
        public void UploadFile(RemoteFileInfo request)
        {
            FileStream targetStream = null;
            Stream sourceStream = request.FileByteStream;
            string filePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "TemporaryFiles", request.FileName);
 
            using (targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                const int bufferLen = XXX;
                byte[] buffer = new byte[bufferLen];
 
                // ...
 
                targetStream.Close();
                sourceStream.Close();
            }
        }
    }
}
Bon, voilà ce que je comptais faire :
- Je transfère des fichiers par morceaux de X Mo maximum.
- Je les copie dans un répertoire de fichiers temporaires sur mon serveur (TemporaryFiles).
- Si un morceau fait moins de X Mo, soit il s'agit du dernier fichier, soit il s'agit d'un fichier qui était assez petit pour ne pas être découpé.
- Une fois qu'ils sont tous transférés, je le recolle et je les transfère dans un autre dossier où ils seront stockés.

Quelle est la taille d'un fichier souhaitée pour un transfert optimal ? 9a représente quoi pour la taille du buffer ?
Comment enregistrer un fichier temporaire ?
Comment recoller mes fichiers temporaires ?


Merci .