问题 FTP下载/重命名功能异步C#

bnasr92

成员
已加入
2020年10月29日
留言内容
5
编程经验
Beginner
我具有将文件上传到ftp的功能,并且我想知道下载和重命名文件的等效功能。我没有使用c#的经验,我只使用此函数将其发布到azure函数,然后在我使用的erp中使用它们。我将很感激,任何人都可以向我展示或指导我具有相同的下载功能和重命名功能;下面是上传功能:

C#:
    [FunctionName("FtpStor")]

    public static async Task<IActionResult> Run(

        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
        ILogger log)

    {

        log.LogInformation("C# HTTP trigger function processed a request.");

    

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

        dynamic data = JsonConvert.DeserializeObject(requestBody);

    

        string fileUri = data.fileUri;

        string username = data.username;

        string password = data.password;

        string filename = data.filename;

        string ContentFileToBase64String = data.ContentFileToBase64String;



        var bytes = Convert.FromBase64String(ContentFileToBase64String);

        Stream fileStream = new MemoryStream(bytes);

        

        //Upload to FTP

        FtpWebRequest ftpWebRequest =  (FtpWebRequest)WebRequest.Create(fileUri);

        ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;

        ftpWebRequest.Credentials = new NetworkCredential(username,password);

        ftpWebRequest.UsePassive = true;



        using (Stream  requestStream = ftpWebRequest.GetRequestStream())

        {

            await fileStream.CopyToAsync(requestStream);

        }

        fileStream.Dispose();



        using (FtpWebResponse  response = (FtpWebResponse)await ftpWebRequest.GetResponseAsync())

        {

            string result = response.StatusDescription;

            

        return response.StatusCode == FtpStatusCode.ClosingData

            ? (ActionResult)new OkObjectResult(result)

            : new BadRequestObjectResult(result);

        }



    

    

    }
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,535
地点
弗吉尼亚州切萨皮克
编程经验
10+
您到底想下载到哪里?到你的机器上?还是到Azure实例?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,535
地点
弗吉尼亚州切萨皮克
编程经验
10+
看:

与其像示例代码中那样将响应流写到控制台,不如使用 Stream.CopyTo() to copy the response stream into FileStream returned to you by File.OpenWrite(). There is no need to rename. Just pass in your desired filename in as the parameter to File.OpenWrite().
 

bnasr92

成员
已加入
2020年10月29日
留言内容
5
编程经验
Beginner
See:

与其像示例代码中那样将响应流写到控制台,不如使用 Stream.CopyTo() to copy the response stream into FileStream returned to you by File.OpenWrite(). There is no need to rename. Just pass in your desired filename in as the parameter to File.OpenWrite().
抱歉,我被误解了,我希望返回的内容是一个流,以便稍后在另一个函数中传递它
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,535
地点
弗吉尼亚州切萨皮克
编程经验
10+
解决方案

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,535
地点
弗吉尼亚州切萨皮克
编程经验
10+
下定决心您需要将数据下载到计算机上吗?还是需要将一个Azure函数的输出传递给另一个函数?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,535
地点
弗吉尼亚州切萨皮克
编程经验
10+
Azure功能具有更有效的方式在FTP上传输数据。有关移动数据的选项,请参见第7条中的链接。我不使用Azure函数,但从我看到的示例中,blob存储似乎是首选的数据存储介质之一。
 
最佳 底部