7
votes

Comment copier un fichier sur un serveur FTP?

Comment copiez-vous un fichier sur un serveur FTP? Mon objectif est de copier ftp://www.mysite.com/test.jpg à ftp://www.mysite.com/testcopy.jpg . Pour renommer un fichier, j'utiliserais: xxx

Cependant, il n'y a pas de méthode de copie de fichiers. Comment feriez-vous copier un fichier?


4 commentaires

Avez-vous un autre accès au serveur? FTP est, en vertu de son nom, plus pour transférer des fichiers que pour la gestion à distance de ces fichiers.


Non, je fais une application Web FTP pour quiconque à utiliser.


Ensuite, vous devriez lire sur la RFC et voir quelles fonctionnalités sont réellement possibles avec le protocole.


Devrait probablement faire ça. Je vais simplement télécharger et télécharger le fichier avec un nouveau nom pour l'instant.


4 Réponses :


2
votes

FTPWEBREQUEST est une classe légère. Microsoft a senti qu'il devrait être utilisé par un client simple pour télécharger et supprimer les fichiers une fois le client terminé.


0 commentaires

1
votes

Je suppose que vous ne pouvez pas vraiment faire cela avec FTP. Ce que vous pouvez faire est de télécharger le fichier que vous souhaitez copier puis de le télécharger avec un nouveau nom. Par exemple: xxx


0 commentaires

10
votes

Essayez ceci:

static void Main(string[] args)
{
    CopyFile("countrylist.csv", "MySample.csv", "username", "password#");
}

public static bool CopyFile(string fileName, string FileToCopy, string userName, string password)
{
    try
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.mysite.net/" + fileName);
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        request.Credentials = new NetworkCredential(userName, password);
        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();
        Upload("ftp://ftp.mysite.net/" + FileToCopy, ToByteArray(responseStream), userName, password);
        responseStream.Close();
        return true;
    }
    catch
    {
        return false;
    }
}

public static Byte[] ToByteArray(Stream stream)
{
    MemoryStream ms = new MemoryStream();
    byte[] chunk = new byte[4096];
    int bytesRead;
    while ((bytesRead = stream.Read(chunk, 0, chunk.Length)) > 0)
    {
        ms.Write(chunk, 0, bytesRead);
    }

    return ms.ToArray();
}

public static bool Upload(string FileName, byte[] Image, string FtpUsername, string FtpPassword)
{
    try
    {
        System.Net.FtpWebRequest clsRequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(FileName);
        clsRequest.Credentials = new System.Net.NetworkCredential(FtpUsername, FtpPassword);
        clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
        System.IO.Stream clsStream = clsRequest.GetRequestStream();
        clsStream.Write(Image, 0, Image.Length);

        clsStream.Close();
        clsStream.Dispose();
        return true;
    }
    catch
    {
        return false;
    }
}


3 commentaires

Puis-je copier des fichiers ou des téléchargements de FTP Server sur HTTP Server? Disons que je veux transférer FTPABCDEF.COM/ABCDEF.XML à xyzed.com/abcdef.xml . Est-il possible avec ce code? ou tout ce que j'ai besoin d'écrire pour cela


@RATNA Vous ne pourrez pas accomplir cela avec ce code. On dirait que vous aurez une meilleure chance de poser une nouvelle question. Vous auriez besoin d'obtenir le fichier via FTP, de le télécharger quelque part (mémoire?), Puis effectuez un message HTTP pour télécharger le fichier sur votre serveur HTTP.


merci@ Hanletcaño pour la réponse. J'ai demandé à ce genre de QS, mais cela a eu un point négatif et enfin fermé. Je dois donc télécharger le fichier dans ma machine locale, puis je peux le télécharger sur le serveur HTTP? ..mais pouvez-vous me dire qu'il est possible de transférer le fichier de FTP sur http à l'aide de PowerShell ou C # ou une autre langue? C'est un esprit stupide que je sais mais je demande parce que je n'ai aucune idée à ce sujet.



1
votes

Dans notre projet, nous avons fait quelque chose comme celui-ci xxx


0 commentaires