无为清净楼资源网 Design By www.qnjia.com
客户端:
复制代码 代码如下:
/// <summary>
/// 写入数据到流中
/// </summary>
/// <param name="url"></param>
/// <param name="callback"></param>
public async static Task<bool> Write(string url, Stream clientStream)
{
if (clientStream.Length > 25*1024*1024)
url += "&t=1"; // 表示上传大文件
try
{
Up(url, clientStream);
return true;
}
catch { }
return false;
}
public async static Task Up(string url, Stream sourceStream)
{
var wc = new WebClient();
byte[] buffer = new byte[25*1024*1024];
int bufLen = sourceStream.Read(buffer, 0, buffer.Length);
if (bufLen < 1)
{
sourceStream.Close();
return;
}
wc.WriteStreamClosed += (s, e) =>
{
if (sourceStream.CanRead)
Up(url, sourceStream);
else
sourceStream.Close();
};
var serverStream = await wc.OpenWriteTaskAsync(url, "POST");
serverStream.Write(buffer, 0, bufLen);
serverStream.Close();
}
服务端:
复制代码 代码如下:
private void Save()
{
string data = Context.Request.QueryString["data"].Base64StringDecode("ABC");
if (data.IsNullOrEmpty())
return;
var m = JsonConvert.DeserializeObject<FileUploadModel>(data);
if (m == null)
return;
var isSplitBlock = Context.Request.QueryString["t"]=="1"; //是否分块上传
#region 保存文件
// 初始化目录
string dirPath = Path.Combine(ConfigHelper.UploadPath, m.Dir); // 文件保存路径
if (!Directory.Exists(dirPath))
Directory.CreateDirectory(dirPath);
// 文件地址
string filePath = Path.Combine(dirPath, m.FileName);
if (!isSplitBlock)
{
if (File.Exists(filePath))
File.Delete(filePath);
}
int bufLen = 0;
byte[] buffer = new byte[4096];
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
fs.Seek(0, SeekOrigin.End);
// 写入原文件
Stream sr = Context.Request.InputStream;
while ((bufLen = sr.Read(buffer, 0, buffer.Length)) > 0)
fs.Write(buffer, 0, bufLen);
sr.Close();
sr.Dispose();
// 缩略图
try
{
if (!m.NeedThumbnail)
return;
dirPath = Path.Combine(dirPath, "Small");
if (!Directory.Exists(dirPath))
Directory.CreateDirectory(dirPath);
filePath = Path.Combine(dirPath, m.FileName);
if (File.Exists(filePath))
File.Delete(filePath);
using (var pic = GetThumbnail(fs, 300, 300))
{
pic.Save(filePath);
}
}
catch { }
}
#endregion
#region 删除原文件
// 删除原文件
if (m.OldFilePath.IsNullOrEmpty())
{
return;
}
try
{
filePath = Path.Combine(ConfigHelper.UploadPath, m.OldFilePath);
if (File.Exists(filePath))
File.Delete(filePath);
if (m.NeedThumbnail)
{
filePath = Path.Combine(ConfigHelper.UploadPath, m.OldThumbnailImagePath);
if (File.Exists(filePath))
File.Delete(filePath);
}
}
catch (Exception ex)
{
}
#endregion
}
分块上传注意点:每块流保存完以后再去读取下以块的数据,不然会多块一起过来会前面的块流数据会被后面的块流数据覆盖;
注重过程的同时注重结果
复制代码 代码如下:
/// <summary>
/// 写入数据到流中
/// </summary>
/// <param name="url"></param>
/// <param name="callback"></param>
public async static Task<bool> Write(string url, Stream clientStream)
{
if (clientStream.Length > 25*1024*1024)
url += "&t=1"; // 表示上传大文件
try
{
Up(url, clientStream);
return true;
}
catch { }
return false;
}
public async static Task Up(string url, Stream sourceStream)
{
var wc = new WebClient();
byte[] buffer = new byte[25*1024*1024];
int bufLen = sourceStream.Read(buffer, 0, buffer.Length);
if (bufLen < 1)
{
sourceStream.Close();
return;
}
wc.WriteStreamClosed += (s, e) =>
{
if (sourceStream.CanRead)
Up(url, sourceStream);
else
sourceStream.Close();
};
var serverStream = await wc.OpenWriteTaskAsync(url, "POST");
serverStream.Write(buffer, 0, bufLen);
serverStream.Close();
}
服务端:
复制代码 代码如下:
private void Save()
{
string data = Context.Request.QueryString["data"].Base64StringDecode("ABC");
if (data.IsNullOrEmpty())
return;
var m = JsonConvert.DeserializeObject<FileUploadModel>(data);
if (m == null)
return;
var isSplitBlock = Context.Request.QueryString["t"]=="1"; //是否分块上传
#region 保存文件
// 初始化目录
string dirPath = Path.Combine(ConfigHelper.UploadPath, m.Dir); // 文件保存路径
if (!Directory.Exists(dirPath))
Directory.CreateDirectory(dirPath);
// 文件地址
string filePath = Path.Combine(dirPath, m.FileName);
if (!isSplitBlock)
{
if (File.Exists(filePath))
File.Delete(filePath);
}
int bufLen = 0;
byte[] buffer = new byte[4096];
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
fs.Seek(0, SeekOrigin.End);
// 写入原文件
Stream sr = Context.Request.InputStream;
while ((bufLen = sr.Read(buffer, 0, buffer.Length)) > 0)
fs.Write(buffer, 0, bufLen);
sr.Close();
sr.Dispose();
// 缩略图
try
{
if (!m.NeedThumbnail)
return;
dirPath = Path.Combine(dirPath, "Small");
if (!Directory.Exists(dirPath))
Directory.CreateDirectory(dirPath);
filePath = Path.Combine(dirPath, m.FileName);
if (File.Exists(filePath))
File.Delete(filePath);
using (var pic = GetThumbnail(fs, 300, 300))
{
pic.Save(filePath);
}
}
catch { }
}
#endregion
#region 删除原文件
// 删除原文件
if (m.OldFilePath.IsNullOrEmpty())
{
return;
}
try
{
filePath = Path.Combine(ConfigHelper.UploadPath, m.OldFilePath);
if (File.Exists(filePath))
File.Delete(filePath);
if (m.NeedThumbnail)
{
filePath = Path.Combine(ConfigHelper.UploadPath, m.OldThumbnailImagePath);
if (File.Exists(filePath))
File.Delete(filePath);
}
}
catch (Exception ex)
{
}
#endregion
}
分块上传注意点:每块流保存完以后再去读取下以块的数据,不然会多块一起过来会前面的块流数据会被后面的块流数据覆盖;
注重过程的同时注重结果
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】
- 陈思安.1990-国语钢琴酒吧5CD【欣代唱片】【WAV+CUE】
- 莫文蔚《莫后年代20周年世纪典藏》3CD[WAV+CUE][2G]
- 张惠妹《我要快乐》华纳[WAV+CUE][1G]
- 罗大佑1982《之乎者也》无法盗版的青春套装版 [WAV+CUE][1G]
- 曾庆瑜1989-款款柔情[日本东芝版][WAV+CUE]
- Scelsi-IntegraledesquatuorsacordesetTrioacordes-QuatuorMolinari(2024)[24bit-WAV]
- 房东的猫2017-房东的猫[科文音像][WAV+CUE]
- 杨乃文.2016-离心力(引进版)【亚神音乐】【WAV+CUE】
- 群星.2024-珠帘玉幕影视原声带【TME】【FLAC分轨】
- 芝麻龙眼.2008-光阴隧道民歌记录3CD【乡城】【WAV+CUE】
- 谭艳《再度重相逢HQII》头版限量[低速原抓WAV+CUE][549M]
- ABC唱片《蔡琴三十周年纪念版》6N纯银镀膜 [WAV+CUE][1.1G]