程序目的是要接收flash发送过来的图片文件的二进制流,并生成图片。下面是jsp的代码,哪位大侠能帮忙用c#重写呢?.net2.0<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%
int v;
String filePath = request.getRealPath(System.currentTimeMillis()+".jpg");
BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());
FileOutputStream outputStream = new FileOutputStream(new File(filePath));
byte [] bytes = new byte[1024];
while((v=inputStream.read(bytes))>0){
outputStream.write(bytes,0,v);
}
outputStream.close();
inputStream.close();
%>多谢!

解决方案 »

  1.   

     byte[] bts = this.getdbBytes();
                MemoryStream ms = new MemoryStream(bts);
                Image img = Image.FromStream(ms);
      

  2.   

    多谢virusplayer这样就是完整的了吗?
      

  3.   

    出错是不是没有引用命名空间?using.System.IO;
      

  4.   

    呵呵...我以前学习过,怎么把图片放入数据库,并显示在网页上.下面把我的学习笔记放上来,有点乱,希望对你有点启示.
    图像文件是二进制形式存在的,在SQL Server数据库中,图像字段类型是image,它实际存放的是二进制数据,
    因此,数据库中的图像存取操作实际就是二进制存取操作. //fulImage是上传文件的服务端控件.
           byte[] imageArray = null;
            if (fulImage.PostedFile.FileName != "")
            {
                //定义用于处理像素数据定义的图像的对象.
                Bitmap bookImage = new Bitmap(fulImage.PostedFile.FileName);
                //创建缓冲区
                MemoryStream mStream = new MemoryStream();
                //设置以图片的格式写入缓冲区
                bookImage.Save(mStream, ImageFormat.Jpeg);
                //将缓冲区内容转换为字节数组
                imageArray = mStream.ToArray();
            }
         把imageArray写进数据库对应的字段就可以了. //显示数据库中的图片数据.
    //优点:是封装性好,外部只要调用这个一般处理程序Handler.ashx就能在叶面上显示图片.
    //缺点:图片的格式必须和数据保存时的格式一致.
    //( ImageFormat.Jpeg-----context.Response.ContentType = "image/jpeg";).<%@ WebHandler Language="C#" Class="Handler" %>using System;
    using System.Web;
    using System.IO;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Drawing;
    using System.Drawing.Imaging;public class Handler : IHttpHandler {
        
            public bool IsReusable 
            {
                get {return false;}
            }    public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.BufferOutput = true;        int photoId = 15;
            Bitmap bitmap = null;        if (context.Request.QueryString["PhotoID"] != null &&
                context.Request.QueryString["PhotoID"] != "")
            {
                photoId = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
                bitmap = GetPhoto(photoId);
            }
            if (bitmap != null)
            {
                //显示图片.如果有图片控件,只要图片控件的Image属性等于bitmap就好.
                bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
                bitmap.Dispose();
            }
              
              context.Response.Flush(); 
        }
           public Bitmap GetPhoto(int photoId)
        {
            SqlConnection myConnection = new SqlConnection(
                ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            SqlCommand myCommand = new SqlCommand
                ("SELECT [Image] FROM [SmallClass] WHERE [Id]=@PhotoID",
                myConnection);
            myCommand.CommandType = CommandType.Text;
            myCommand.Parameters.Add(new SqlParameter("@PhotoID", photoId));
            myConnection.Open();
            object result = myCommand.ExecuteScalar();
            //关键的代码.
            MemoryStream stream = new MemoryStream(); 
            try
            {
                if (result.ToString() != "")
                {
                    byte[] image = (byte[])result;
                    stream.Write(image, 0, image.Length);
                    Bitmap bitmap = new Bitmap(stream);
                    return bitmap;
                }
                else
                { return null; }
            }
            catch (ArgumentNullException e)
            {
                return null;
            }
            finally
            {
                myConnection.Close();
            }
        }
    }
    下面的方法也可以,并且这个方法,不管是什么文件都可以保存在数据库吧.  protected void btnSave_Click(object sender, EventArgs e)
        {
            if(FileUpload1.HasFile == true)
            {
                //产生Stream流对象
                Stream myStream = FileUpload1.PostedFile.InputStream;
                //得到文件的信息
                FileInfo myfile = new FileInfo(FileUpload1.PostedFile.FileName);
                int length = (int)myStream.Length;
                //产生字节数组对象
                byte[] bytes = new byte[length];
                //读取文件,将数据放入字节数组中.
                myStream.Read(bytes, 0, length);
                //关闭流.
                myStream.Close();
                //保存到数据库中
                InsertToDb(myfile.Name, myfile.Extension, bytes);
                //重新绑定数据.即刷新GridView中的数据.
                GridView1.DataBind();        }
        }    private void InsertToDb(string FileName, string FileExt, Byte[] FileContent)
        {
            SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["tempdbConnectionString"].ToString());
            string sql = "INSERT INTO Adjunct(FileName, FileExt, FileContent) VALUES (@FileName, @FileExt, @FileContent)";
            SqlCommand cmd = new SqlCommand(sql, cn);
            cmd.Parameters.AddWithValue("@FileName", FileName);
            cmd.Parameters.AddWithValue("@FileExt", FileExt);
            cmd.Parameters.AddWithValue("@FileContent", FileContent);
            try
            {
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
                cn.Dispose();
                cmd.Dispose();
            }
            catch
            {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
                cn.Dispose();
                cmd.Dispose();
            }
        }
      

  5.   

    public partial class picUpStream : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void bt_upload_Click(object sender, EventArgs e)
        {
            try
            {            Stream fileFullStream = FileUpload1.PostedFile.InputStream;//这里获取文件流
                //Stream fileFullStream = Request.InputStream;//如果是从网络获取文件流则可以使用request方法
                if (fileFullStream.Length < 1)
                {
                    this.lb_info.Text = "请选择文件";
                    return;
                }
                  // BufferedStream bfs = new BufferedStream(fileFullStream);
                    int buffersize = (int)fileFullStream.Length;//获取流的长度
                    byte[] buffer = new byte[buffersize];//把文件流转化成字节数组
                    int count = fileFullStream.Read(buffer, 0, buffersize);//读取文件
                    string picNewName = DateTime.Now.ToString("yyyyMMddHHmmssffff");//取当前时间戳作为新文件名
                    string serverpath = Server.MapPath("~/picUp") + "\\" + picNewName+ ".jpg";//文件保存路径
                    FileStream fs = new FileStream(serverpath, FileMode.Create, FileAccess.Write);//创建文件
                    fs.Write(buffer, 0, buffersize);//写入数据
                    fs.Flush();//清出缓冲区
                    fs.Close();//关闭流
                    this.lb_info.Text = "文件上传成功!";        }        catch (Exception ex)
            {
                this.lb_info.Text = "上传发生错误。原因是:" + ex.ToString();
            }
        }