Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用Windows应用程序中的FTP客户端ul/dl_C#_Sockets_Ftp_Uwp_Universal - Fatal编程技术网

C# 通用Windows应用程序中的FTP客户端ul/dl

C# 通用Windows应用程序中的FTP客户端ul/dl,c#,sockets,ftp,uwp,universal,C#,Sockets,Ftp,Uwp,Universal,我正在努力上传和下载文件到UWP/Windows应用商店的FTP服务器。 缺少,因此您必须使用自己的Ftp客户端。我还没有找到任何可用的开源库。我试过了;目录列表工作正常,但启动/下载在几个字节后中断。可能是缓冲区问题?这是上传流,下载功能在msdn站点上 using (var stream = await ftpClient.OpenWriteAsync(newFilePath)) { var bytes = System.Text.Encoding.UTF8.GetBytes(fil

我正在努力上传和下载文件到UWP/Windows应用商店的FTP服务器。 缺少,因此您必须使用自己的Ftp客户端。我还没有找到任何可用的开源库。我试过了;目录列表工作正常,但启动/下载在几个字节后中断。可能是缓冲区问题?这是上传流,下载功能在msdn站点上

using (var stream = await ftpClient.OpenWriteAsync(newFilePath))
{
    var bytes = System.Text.Encoding.UTF8.GetBytes(filecontent);
    await stream.WriteAsync(bytes.AsBuffer());
    await stream.FlushAsync();
}

我听说
BackgroundTransfer
类不支持FTP上传。是否有人找到了将文件加载到UWP应用程序中受密码保护的FTP服务器的解决方案?
谢谢你的帮助

那么这两段代码中哪一段会中断?它在什么情况下会中断?在这两种情况下,文件都是创建的,但写入中断的文件大小为2kb。下载流的行为方式几乎相同。非常小的文件可以下载,但是大于1mb的文件会被裁剪。这就是为什么我假设这是一个缓冲区问题,我设法用一个php文件来验证它。我把文件上传到PHP页面,PHP页面为我保存了它。这对你来说是一个解决办法吗?我在想你的问题,想问你,这是为了什么?FTP的确切用途是什么?因为通过UWP直接访问FTP不是很安全。我的应用程序生成用户稍后从其他程序加载的文件。这些文件应便于用户从任何地方和不同设备上访问。我认为ftp服务器将是一个用户友好且足够安全的解决方案。目前,使用单独的ftp程序(Filezilla)上载文件。我想通过在我的应用程序中添加一个ftp上传模块来简化数据流。
using (var stream = await OpenWriteAsync(destination))
{
    // A more efficient way, maybe a DataReader can be used here
    using (var readStream = await file.OpenReadAsync())
    {
        var buffer = new byte[512].AsBuffer();
        var resultingBuffer = new byte[0];

        while (true)
        {
            IBuffer readBuffer = await readStream.ReadAsync(buffer, 512, InputStreamOptions.Partial);

            if (readBuffer.Length == 0) break;

            resultingBuffer = resultingBuffer.Concat(readBuffer.ToArray()).ToArray();
        }

        await stream.WriteAsync(resultingBuffer.AsBuffer());
        await stream.FlushAsync();
    }
}