请教C# wpf客户端有两个文件上传框,服务端接口的思路?

客户端是c# wpf开发,布局是有两个以上的文件上传框,都是大文件,至少有500M,服务器端的接口是PHP开发,请问各位有没有好的思路提升客户端的上传用户体验?服务器端又应该如何接收这些大文件数据呢?如果提供伪代码是再好不过了,谢谢!

阅读 4.4k
4 个回答

http传大文件可能会有各方面的问题,比如web容器的限制,php处理的限制
这两样的限制不太熟,不过按照平时的经验应该会有坑,到时候优化的重点可能会在他们的配置上,比较蛋疼。

所以在C#范围内给你想一个解决方案吧
用Socket类直接建立TCP连接,或者用NetworkStream类处理也可以
如果有加密传输需求就再加一层SslStream
需要注意几点:合适的buffer大小,文件分片,文件分片的完整性校验,最终合并的完整性校验。

对于大文件,在C#客户端就要现对数据分片,再将分片上传到服务器,这样即使中途网络断开,也不需要重写全部上传一次。

没接触过,可能思路就是,配置文件得改,比如post_max_size,upload_max_filesize等参数,服务器的一些配置可能也得改,第二个就是大文件得分片,切割成小文件,html5有对文件处理的api,可以搜索一下。

用http上传,上传图片过程中显示上传的进度
**

服务端

**(我用了tp的Upload类,如果你不是用thinkphp框架,要稍微改动一下):

$upload = new Upload([
            'maxSize' => 20 * 1024 * 1024,
            'exts' =>  ['jpg', 'gif', 'png', 'jpeg'],
            'rootPath' => ROOT . '/Uploads/Pictures/',
            'saveName'   =>    array('uniqid', '')
]);
$info = $upload->upload();

客户端

用HttpWebRequest 发送http请求(具体代码有点陌生了)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题