最近在写一个小程序,功能是将文件读取然后然后上传到文件服务器上去。 文件服务器端接收格式为字符串。思路是将文件读取后转换为Base64编码,然后传递给服务器。
再读取文件和转换的过程中遇到了一些问题,总是得到的东西不对,都是以而写zMzMzM的连续的乱码式字符。苦思不得其解,后来觉得可能是读取的时候转换过程中出现了问题。怀疑是整个转换过程出现了问题。
于是想用另外一个办法,每次读取4096字节数据,转换。这样把所有的加起来就是整个的base64编码。但是转换后仍然问题依旧。苦思,最后发觉,Base64编码规则是将3个8Bytes的数据转换为4个6bytes的数据。而4096不是3的倍数,正好余1,最后一个如何转换呢?因此将Buffer长度改为4095,问题解决。
下面是部分代码:
CString fileURL = m_filePath;
HANDLE hFile;
TCHAR buffer[BUFSIZE];
TCHAR lpPathBuffer[BUFSIZE];
DWORD dwBytesRead, dwBytesWritten, dwBufSize=BUFSIZE;
hFile = CreateFile(m_filePath.GetBuffer(), // file name
GENERIC_READ, // open for reading
0, // do not share
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return;
}
CString str;
do
{
if (ReadFile(hFile, buffer, 4095,
&dwBytesRead, NULL))
{
/*CString temp(buffer);
str+=temp; */
CStringA contentStr = ToBase64(buffer,dwBytesRead);
str.Append((CString)contentStr);
}
} while (dwBytesRead == BUFSIZE);
CloseHandle(hFile);
分享到:
相关推荐
还可用来在智能手机之间通过蓝牙、无线网络、数据线传输文件,支持多线程和断点续传,代码已经封装成一个dll库,可以作为服务器来使用,也可以当作客户端来使用,服务端支持蓝牙(Bluetooth)接入,并提供详细的测试...
1.将此文件夹上传到网站根目录 2.打开自己站点网址,如:example.com,或loaclhost 3.第一次安装时打开网址:example.com/admin.php和example.com/mobile/admin.php登记管理员信息,因为移动版实则是另一套Glype程序...
在Windows系统下搭建FTP服务器,手机端安装ftp客户端,手机端访问ftp服务器,实现文件的上传和下载! 详细说明:https://www.jianshu.com/p/de0d8ac5a227
【软件名称】支持多线程断点续传的文件传输(FTP)程序(含服务端和客户端、支持蓝牙(Bluetooth)传输)【版 本】1.0.0【操作系统】Windows 桌面系列、Windows Mobile【作 者】谢红伟 · chrys · chrys@ ·【软件说明...
2、上传 upload 目录中所有文件到服务器ecshop商城系统的mobile目录 3、设置目录权限,./data 目录需要读写权限 4、执行安装程序,请在浏览器中运行安装程序 访问:http://你的域名/mobile/index.php 5、请根据...
支持文件扩展名,文件大小和最大值的全局和字段特定客户端/服务器端验证。文件数量(如果多次上传) 使用method =“post”的表单的同步器标记 支持phpass格式的用户密码(由第三方系统加密) 改进的代码编辑器 UI...
一次赵先生从家里出发往公司参加会议,在公共汽车上突然想起一份重要文档还在家里的电脑上,正巧孩子在玩游戏,电脑是开着,于是赵先生使用手机利用RABSoft远程服务平台发送离线文件存储命令,将文档上传到了中转站...
之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) ├─C#源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何使用错误提醒控件 │ │ ├─实例10 如何使用列表...
在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...
支持多种服务器环境,支持 平台可运行在WINDOWS、 LIUNX 、UNIX等任何支持PHP MYSQL服务器环境的主机、虚拟主机、VPS以及云主机。 零风险实施部署 苦菊OA打破传统协同软件商业模式,打造轻型、易安装、易维护的OA...
C#源码大集合 01(共3卷) <br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) <br> ├─C#源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...
C#源码大集合 03(共3卷) <br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷) <br> ├─C#源码第一部分 │ ├─第1章 控件操作 │ │ ├─实例1 如何...
选题目的和意义: " "随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求 " "越来越高,而Symbian,WindowsMobile,Palmos等手机平台,过于封闭,不能很好的" "满足用户的需求,因此市场迫切...