[C#] ftp : pourquoi mon fichier à uploader n'est pas accessible ?
Bonjour à tous,
J'ai le code suivant (msdn) qui me permet d'envoyer un fichier sur un serveur ftp.
Mais j'obtiens l'erreur suivant lorsque j'éxécute:
Code:
1 2 3
|
Le serveur distant à retourner une erreur (550) : fichier non disponible (par exemple, fichier introuvable, accès impossible) |
Pourtant le fichier à envoyer exsiste bien, j'ai vérifier en debug à divers endroits du script et ça ma variable filename contient bien le chemin et nom de fichier.
Le script:
Code:
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;
using System.Net;
using System.Windows.Forms;
namespace Webeuredi
{
class ftpState
{
private ManualResetEvent _wait;
private FtpWebRequest _request;
private string _fileName;
private Exception _operationException = null;
private string _status;
public ftpState()
{
_wait = new ManualResetEvent(false);
}
public ManualResetEvent OperationComplete
{
get { return _wait; }
}
public FtpWebRequest Request
{
get { return _request; }
set { _request = value; }
}
public string FileName
{
get { return _fileName; }
set { _fileName = value; }
}
public Exception OperationException
{
get { return _operationException; }
set { _operationException = value;}
}
public string StatusDescription
{
get { return _status; }
set { _status = value; }
}
}
public class AsynchronousFtpUploader
{
private Uri _target;
private string _filename;
private ftpState _state;
private FtpWebRequest _request;
ManualResetEvent _waitObject;
public AsynchronousFtpUploader(string target, string filename)
{
_target = new Uri(target);
_filename = filename;
_state = new ftpState();
_request = (FtpWebRequest)WebRequest.Create(_target);
_request.Method = WebRequestMethods.Ftp.UploadFile;
_request.Credentials = new NetworkCredential("anonymous", "anonymous@sga.com");
_state.Request = _request;
_state.FileName = _filename;
_waitObject = _state.OperationComplete;
_request.BeginGetRequestStream(new AsyncCallback(EndGetStreamCallback), _state);
_waitObject.WaitOne();
if (_state.OperationException != null)
{
throw _state.OperationException;
}
else
{
Console.WriteLine("The opration completed - {0}", _state.StatusDescription);
}
}
private void EndGetStreamCallback(IAsyncResult ar)
{
ftpState state = (ftpState) ar.AsyncState;
Stream requestStream = null;
try
{
requestStream = state.Request.EndGetRequestStream(ar);
const int bufferLength = 2048;
byte[] buffer = new byte[bufferLength];
int count = 0;
int readBytes = 0;
FileStream stream = File.OpenRead(state.FileName);
do
{
readBytes = stream.Read(buffer,0,bufferLength);
requestStream.Write(buffer,0,readBytes);
count+=readBytes;
}
while(readBytes!=0);
Console.WriteLine("Writing {0} bytes to the stream.", count);
requestStream.Close();
state.Request.BeginGetResponse(new AsyncCallback(EndGetResponseCallback),state);
}
catch (Exception e)
{
state.OperationException = e;
state.OperationComplete.Set();
return;
}
}
private void EndGetResponseCallback(IAsyncResult ar)
{
ftpState state = (ftpState) ar.AsyncState;
FtpWebResponse response = null;
try
{
response = (FtpWebResponse) state.Request.EndGetResponse(ar);
response.Close();
state.StatusDescription = response.StatusDescription;
state.OperationComplete.Set();
}
catch (Exception e)
{
Console.WriteLine("Error getting response");
state.OperationException = e;
state.OperationComplete.Close();
}
}
}
} |
D'où peut venir ce message d'erreur ???
Merci grandement pour votre aide !