YUploadImg这个东西没用过,不知道是flash的还是javascript的。你想保存到数据库则必须要借助后台语言来实现,比如C#、Java等。至于你说的图片数据不是路径是二进制,这个你百度学习一下,有很多现成代码的。

解决方案 »

  1.   

    这个是flash的。因为我要实现批量的图片上传,只能借助flash来实现。可是不知道该怎么写后台代码,我刚刚在修改这个插件附带的一个实例的ashx文件,发现还是不能上传到数据库...
    如果可以,请您帮我看看。由于之间我忘记是在哪下载的了,只好把这个插件上传上来,要浪费您一个下载积分,是在抱歉....下载地址:http://download.csdn.net/detail/arthuskingofc/6897291
      

  2.   

    你修改它的ashx基于什么分析呢?此时你在它的ashx中又能得到什么数据呢?
      

  3.   

    我看了这个插件附带的示例后,发现唯一有关于图片的数据上传操作部分在ashx文件中,其中数据传递过来的一句我认为应该是这句
     System.Web.HttpPostedFile postFile = context.Request.Files[0];这一句也是在ashx文件开头代码中的一句,然后我在这个flash插件的as文件中也看到了这一句:
    private var _upURL="/up_img.ashx"
    up_img.ashx就是示例中的ashx文件然后我想,我可不可以通过修改ashx文件中的保存方法来打到我的目的(尽管我不知道那么多张图片是通过什么机制传递过来然后进行处理的),我就把ashx原来用于把图片上传到文件夹的代码(嵌套在try语句中的if里的内容)注释掉了,手动添加了通过sql语句来保存图片到数据库的代码。然后发现没有数据被保存到数据库中。
    在此插件附带的示例的ashx文件中,通过调用HttpPostedFile 对象的 SaveAs 方法来实现保存图片到文件夹。
    一下是ashx文件中的部分代码:public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                System.Web.HttpPostedFile postFile = context.Request.Files[0];
                if (postFile != null)
                {
                    if (IsAllowedExtension(postFile) == false)
                    {
                        context.Response.Write("error:-5");//上传文件类型错误!
                        return;
                    }
                    if (postFile.ContentLength <= 0 || postFile.ContentLength / 1024 > deLength)
                    {
                        //context.Response.Write((postFile.ContentLength / 1024).ToString());
                        context.Response.Write("error:-4");//Slip:上传文件大小错误!
                        return;
                    }
                    try
                    {
                        System.Drawing.Image drimg = System.Drawing.Image.FromStream(postFile.InputStream);
                        int Height = drimg.Height;
                        int Width = drimg.Width;
                        drimg.Dispose();
                        if (Height >= 300 && Width >= 300)
                        {
                            string savepath = context.Server.MapPath("~/images");//图片上传路径
                            string oldFilename = Path.GetFileNameWithoutExtension(postFile.FileName);
                            string strFilename = DateTime.Now.ToString("yyyyMMddhhmm") + System.Guid.NewGuid().ToString().Substring(4, 8) + Path.GetExtension(postFile.FileName);
                            string finalePath = Path.Combine(savepath, strFilename);
                            postFile.SaveAs(finalePath);
                            context.Response.StatusCode = 200;
                            context.Response.Write(strFilename + "|" + oldFilename);
                            return;
                        }
                        else
                        {
                            context.Response.Write("error:-2");//Slip:图片尺寸必须大于600px*400px! 
                        }
                    }
                    catch
                    {
                        context.Response.Write("error:-3");//Slip:上传文件错误! 
                    }
                }
            }
    我是想,既然原来的示例中数据能被保存,而且有一个HttpPostedFile对象接收了数据,那么我应该可以让这个数据通过另外一个方法保存到数据库中而不是文件夹中。其实我不太了解ashx的作用,只知道这个是一般处理程序,接触经验很少,可能这也是学生的一个缺点吧。后来也有去找一些关于这种文件的资料看,但一直都是一知半解。
    不知道是我对这个ashx文件修改的出发点是错的还是我用的方法不对,请您指点一下,谢谢了!
      

  4.   

    换句话说,就是人家的 finalePath 所表示的路径下保存了文件了吗?人家的 drimg 对象产生了一个实际的位图对象了吗?(尽管你贴的代码实际上最终扔掉了 drimg 对象而没有利用)。如果这些你测试了,或者调试了,那么你就需要去了解“一个 Stream或者二进制文件或者BitmapImage保存到数据库的问题”。如果没有,那么我建议你先学会调试程序。
      

  5.   

    调试做过了,finalePath的确是有数据的。不过您说需要去了解“一个 Stream或者二进制文件或者BitmapImage保存到数据库的问题”我觉得应该是这个问题吧。我先试试看。谢谢您热情的帮助!祝你新年快乐啦!
      

  6.   

    另外想问您一个问题,就是我上面贴的代码,我有点不明白为何那段代码会循环执行下去,以前我学习的经验来看要循环的肯定是需要for或者while等语句的,可是在调试过程中发现在没有这些语句的情况下finalePath的值还是会循环改变的,一直到所有的图片到上传完毕为止。flash的as文件我没仔细看,根据您的经验来看产生这样的循环是因为做flash的as文件中动态设定了还是ashx文件本身的某些特性导致的?
    呃,我的确不太懂,可能问的问题有些不找边际,您别见怪哈