1.C语言可以使用CStdioFile函数打开本地文件。使用类CInternetSession 创建并初始化一个Internet打开FTP服务器文件。
CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。
流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。
使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。
如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释URL并管理它。它可处理由URL资源“file://”标志的本地文件的请求。如果传给它的名字是本地文件,OpenURL 将返回一个指向CStdioFile对象的指针。
如果使用OpenURL在Internet服务器上打开一个URL,你可从此处读取信息。如果要执行定位在服务器上的指定的服务(例如,HTTP,FTP或Gopher)行为,必须与此服务器建立适当的连接。
//文件写入流private void ReadFile()
{
Byte[] MesageFile
string path =@"c:\123.XML"
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read)
int size = Convert.ToInt32(stream.Length)
MesageFile = new Byte[size]
stream.Read(MesageFile, 0, size)
stream.Close()
string fileName =path.Substring(path.LastIndexOf("\\") + 1, path.Length path.LastIndexOf("\\") - 1)
WriteFile(MesageFile, fileName)
}
//写入文件
private void WriteFile(Byte[] fileByte,string fileName)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "\\UpLoad\\" + DateTime.Now.ToString("yyyy-MM-dd")+"\\"
if (!Directory.Exists(path))
Directory.CreateDirectory(path)
string savepath = path + fileName
FileStream fos = new FileStream(savepath, FileMode.OpenOrCreate, FileAccess.ReadWrite)
fos.Write(MesageFile, 0, MesageFile.Length)
fos.Close()
}
上传的文件格式不限。
C#使用webservice把文件上传到服务器的代码如下(这里以C:\\zhidao.jpg这个文件上传为例):
WebService部分:
/// <summary>/// 保存文件到远程服务器
/// </summary>
/// <param name="FileByteArray">待转换字节数组</param>
/// <param name="FileLength">字节长度</param>
/// <param name="SaveToUrl">保存路径</param>
/// <returns>返回是否执行成功</returns>
[WebMethod(Description = "保存文件到远程服务器.")]
public bool SaveFile(byte[] FileByteArray,int FileLength, string SaveToUrl)
{
try
{
FileStream fs = new FileStream(SaveToUrl, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(FileByteArray, 0, FileLength)
fs.Close()
}
catch {
return false
}
return true
}
上传文件调用部分:
protected void Button1_Click(object sender, EventArgs e){
MangerPhoto.Service mp = new MangerPhoto.Service()
Response.Write(mp.SaveFile(getByte(), FileUpload1.PostedFile.ContentLength, "C:\\zhidao.jpg"))
} private byte[] getByte() {//获得转化后的字节数组
//得到用户要上传的文件名
string strFilePathName = FileUpload1.PostedFile.FileName
string strFileName = Path.GetFileName(strFilePathName)
int FileLength = FileUpload1.PostedFile.ContentLength
//上传文件
Byte[] FileByteArray = new Byte[FileLength] //图象文件临时储存Byte数组
Stream StreamObject = FileUpload1.PostedFile.InputStream //建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray, 0, FileLength)
return FileByteArray
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)