以前做了个上传图片到 图片服务器的功能 具体就是POST文件流,然后图片服务器接收此流.然后保存成图片!
服务器代码如下:
System.Drawing.Image postImage = System.Drawing.Image.FromStream(Request.InputStream);
postImage.Save(路径+ "/" + 文件名);现在想做个文件上传的功能, 如果我上传的是TXT文件 那就保存成TXT FLV文件就保存成FLV
我这个只能保存图片. 具体怎么改代码呢 ~! 高手多多帮忙
服务器代码如下:
System.Drawing.Image postImage = System.Drawing.Image.FromStream(Request.InputStream);
postImage.Save(路径+ "/" + 文件名);现在想做个文件上传的功能, 如果我上传的是TXT文件 那就保存成TXT FLV文件就保存成FLV
我这个只能保存图片. 具体怎么改代码呢 ~! 高手多多帮忙
解决方案 »
- linq添加数据 报 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'bx_wap_TypeInfo' 中的标识列插入显式值。
- 一个Reader的类,在那里Conn.close()啊
- 一个很郁闷的问题,关于FormsAuthentication.SetAuthCookie(dddd, false);
- 大家谈谈这样的解决方案,页面有中文英文的两种显示。参与者都有分,非常感谢!
- 2.0与1.1 IE与FireFox
- 困惑!+讨论
- ajax 文本框输入自动提示 undefined
- 自定义导航按钮,具有很高效率,适合于海量记录的DataGrid应用案例
- 关于asp.net程序使用jquery影响开发的系统性能的问题!
- 求asp.net mvc控制到按钮级别的系统的实例或者源代码
- 求助“网上付款”功能的解决方案(急)!!
- 在后台怎么获得checkbox中的值
if (fileImg.HasFile)
{
//检查是否为图片文件
bool isImg = false;
string contentType = fileImg.PostedFile.ContentType.ToLower();
this.lblFileType.Text = contentType;
string fileType = "";
//判断文件MIME类型
if (contentType.Equals("image/jpeg") ||contentType.Equals("image/pjpeg"))
{
isImg = true;
fileType = "jpg";
}
if (contentType.Equals("image/gif"))
{
isImg = true;
fileType = "gif";
} if (!isImg)
{
this.lblMsg.Text = "您选择的可能不是图片文件,请上传JPG或GIF格式的文件!";
//Response.Write("<script>alert('您选择的可能不是图片文件,请上传JPG或GIF格式的文件!');location='javascript:history.go(-1)'</script>");
} //检查文件大小 int size = 0; size = fileImg.PostedFile.ContentLength; if (size > 600 * 1024)//大于600K
{
Response.Write("<script>alert('您上传的文件大于600K,请处理后再上传!');location='javascript:history.go(-1)'</script>");
} string filename = DatetoFilename();
string path = Server.MapPath("images");
fileImg.SaveAs(path +"\\"+ filename + "."+fileType); }
else
{
this.chkShow.Checked = false;
Response.Write("<script>alert('您未上传首页图片,我们将做不在首页显示处理!')</script>");
}
所以没什么用啊.这种我不适用啊!
请参考下我发的代码
但是我找了好久 就是不知道用什么样的方法
System.Drawing.Imaging.ImageFormat.Bmp 用 SWITCH(文件类型) 取 相应 类
MemoryStream 然后才 转化成 图片 或 别的什么数据 不是吗?》 while (true)
{
bool con = false;
List<byte> listBytes = new List<byte>();//装载接收图片数据
Socket tmpSocket = receiveSocket.Accept();
while (true)
{ byte[] bytes = new byte[tmpSocket.ReceiveBufferSize];//存放每次接收到的数据 300 * 1024
int data = tmpSocket.Receive(bytes, bytes.Length, 0);
if (data == 1 || con == true)//表示数据接收完毕,跳出循环
{ break; }
if (data <= 0)//当接收的数据为0时,进行sleep
{ System.Threading.Thread.Sleep(40); con = true; continue; } for (int i = 0; i < data; i++)
{
//把每次接收到的数据写入listBytes
listBytes.Add(bytes[i]);
}
}
if (listBytes.Count > 0)
{
//因为socket是分包发送数据,所以等数据全部接收完后转换
using (MemoryStream ms = new MemoryStream(listBytes.ToArray()))
{
Bitmap Origninal = new Bitmap(ms);
Bitmap returnBmp = new Bitmap(Origninal.Width, Origninal.Height);
Graphics g = Graphics.FromImage(returnBmp);
g.DrawImage(Origninal, 0, 0);
ms.Close();
pictureBox1.Image = (Image)returnBmp;
//pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
}
}
此函数,把接收到得 二进制 数据 转化成 图片要实现你的功能,你必须写一个借口,然后 对你可能用到 每一种格式(图片,视频,文档)写个 转化类!然后根据你 传输过来的格式 你进行判断,,,new 哪个类来实现 转化!然后用 上面的 SaveFileDialog
这是我 大概的思路!
我就是这个思路!但是不会写代码
思路我都知道 就是不知道怎么写代码!!
Request.InputStream 怎么保存成文件!?
System.Drawing.Image postImage = System.Drawing.Image.FromStream(Request.InputStream);
postImage.Save(路径+ "/" + 文件名);
换成:
Request.SaveAs(径+ "/" + 文件名, false);就这一句就搞定了。. 自己终于研究出来了
修改后面 转化部分 不就OK?判断:文件传输前 + 5个 固定长度字符 发送(保存 文件类型 ,如3.map : map~~ 多的两位用特殊字符代替) byte[] bufCmd = new byte[5];
int iCount = tmpSocket.Receive(bufCmd, 0, 5, SocketFlags.Partial);
string strCommand = Encoding.UTF8.GetString(bufCmd, 0, CMDLEN);
return strCommand = strCommand.TrimEnd("~~");switch(strCommand )
{
case "map":
//借口
interface1 c = new 类名(); //继承借口的类,
c.函数() //转化成 文件
break;}
http://download.csdn.net/source/840010 有源码 别的写!没看过,自已去看看,可能有用
string type = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower();
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.BinaryWrite(file );
Response.Flush();
Response.End();