62,074
社区成员
发帖
与我相关
我的任务
分享
MemoryStream ms;
public void ProcessRequest(HttpContext context)
{
string _filedir = context.Server.MapPath(@"/Styles/images/");
try
{
string result = "3";
int cout = context.Request.Files.Count;
if (cout > 0)
{
HttpPostedFile hpf = context.Request.Files[0];
if (hpf != null)
{
string fileExt = Path.GetExtension(hpf.FileName).ToLower();
//只能上传文件,过滤不可上传的文件类型
string fileFilt = ".gif|.jpg|.php|.jsp|.jpeg|.png|......";
if (fileFilt.IndexOf(fileExt) <= -1)
{
result= "1";
}
int length = hpf.ContentLength; //判断文件大小
if (length > 204800)
{
result= "2";
}
byte[] bt = new byte[length];//获取文件的Byte[]
ms = new MemoryStream(bt);//用Byte[],实例化ms
UriBuilder url = new UriBuilder("http://192.168.20.162:8030/temp_1/ashx/UploadHandler.ashx");//上传路径
url.Query = string.Format("filename={0}", Path.GetFileName(hpf.FileName));//上传url参数
WebClient wc = new WebClient();
wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted);//委托异步上传事件
wc.OpenWriteAsync(url.Uri);//开始异步上传
context.Response.Write(hpf.FileName);
}
}
context.Response.Write(result);
}
catch
{
context.Response.Write("3");//3文件上传失败
}
}
protected void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
{
int bufSize = 10;
int byteGet = 0;
byte[] buf = new byte[bufSize];
while ((byteGet = ms.Read(buf, 0, bufSize)) > 0)//循环读取,上传
{
e.Result.Write(buf, 0, byteGet);//注意这里
}
e.Result.Close();//关闭
ms.Close();
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string filename = context.Request.QueryString["filename"].ToString();
using (FileStream inputStram = File.Create(context.Server.MapPath("~/img/") + filename))
{
SaveFile(context.Request.InputStream, inputStram);
}
}
protected void SaveFile(Stream stream, FileStream inputStream)
{
int bufSize = 1024;
int byteGet = 0;
byte[] buf = new byte[bufSize];
while ((byteGet = stream.Read(buf, 0, bufSize)) > 0)
{
inputStream.Write(buf, 0, byteGet);
}
}
protected void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
{
int bufSize = 10;
int byteGet = 0;
byte[] buf = new byte[bufSize];
while ((byteGet = ms.Read(buf, 0, bufSize)) > 0)//循环读取,上传
{
e.Result.Write(buf, 0, byteGet);//注意这里
uploadInfo.UploadedLength += byteGet;
}
// 让父页面知道已经处理上传完毕
e.Result.Close();//关闭
ms.Close();
}
// 读取要上传的文件
FileStream fs = new FileStream(this.fileUpload.PostedFile.FileName, FileMode.Open, FileAccess.Read);
ms = new BinaryReader(fs);
string newFile = DateTime.Now.Ticks.ToString();
string exit = this.fileUpload.FileName.Substring(this.fileUpload.FileName.IndexOf('.'));
newFile = newFile + exit;
UriBuilder url = new UriBuilder("http://localhost:4256/UploadFileHander.ashx");//上传路径
url.Query = string.Format("filename={0}", newFile);//上传url参数
uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength;
uploadInfo.FileName = newFile;
uploadInfo.UploadedLength = 0;
//文件存在 初始化...
uploadInfo.IsReady = true;
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;
wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted);//委托异步上传事件
wc.OpenWriteAsync(url.Uri);//开始异步上传
const string js = "window.parent.onComplete('success', '{0} 已成功上传,重命名为:{1}:文件大小:{2}');";
ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, Path.GetFileName(this.fileUpload.FileName), DateTime.Now.ToString("yyyy-MM") + "/" + DateTime.Now.Day + "/" + newFile, uploadInfo.ContentLength), true);