Как я создаю каталог на FTP-сервере с помощью C#?

Решение Роба Стивенсона-Леггета медленное, потому что он не связывает свои значения, а использует string.Format ().

Когда вы просите Oracle выполнить инструкцию sql, она начинается с вычисления значения has этого оператора. После этого он смотрит в хеш-таблицу, знает ли он уже этот оператор. Если он уже знает свой оператор, он может извлечь свой путь выполнения из этой хеш-таблицы и выполнить этот оператор очень быстро, потому что Oracle выполнял этот оператор раньше. Это называется библиотечным кешем, и он не работает должным образом, если вы не связываете свои операторы sql.

Например, не делайте:

int n;

    for (n = 0; n < 100000; n ++)
    {
      mycommand.CommandText = String.Format("INSERT INTO [MyTable] ([MyId]) VALUES({0})", n + 1);
      mycommand.ExecuteNonQuery();
    }

, но делайте:

      OracleParameter myparam = new OracleParameter();
      int n;

      mycommand.CommandText = "INSERT INTO [MyTable] ([MyId]) VALUES(?)";
      mycommand.Parameters.Add(myparam);

      for (n = 0; n < 100000; n ++)
      {
        myparam.Value = n + 1;
        mycommand.ExecuteNonQuery();
      }

Неиспользование параметров также может вызвать sql инъекции.

61
задан Martin Prikryl 24 June 2019 в 15:37
поделиться

2 ответа

Используйте FtpWebRequest с методом WebRequestMethods.Ftp. MakeDirectory .

Например:

using System;
using System.Net;

class Test
{
    static void Main()
    {
        WebRequest request = WebRequest.Create("ftp://host.com/directory");
        request.Method = WebRequestMethods.Ftp.MakeDirectory;
        request.Credentials = new NetworkCredential("user", "pass");
        using (var resp = (FtpWebResponse) request.GetResponse())
        {
            Console.WriteLine(resp.StatusCode);
        }
    }
}
104
ответ дан 24 November 2019 в 17:06
поделиться

Примерно так:

// remoteUri points out an ftp address ("ftp://server/thefoldertocreate")
WebRequest request = WebRequest.Create(remoteUri);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
WebResponse response = request.GetResponse();

(немного поздно. Как странно)

20
ответ дан 24 November 2019 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: