程序电脑运行正常,手机上通不过

枫之幻月 2018-04-24 09:40:39
因为只有在手机上才出问题,我都没法调试,只能把过程放出来了
if (FileUpload1.HasFile)
{
string filepath = Server.MapPath("~/images/Images/");
HttpFileCollection uploadFiles = Request.Files;
for (int i = 0; i < uploadFiles.Count; i++)
{
System.Drawing.Image image = System.Drawing.Image.FromStream(uploadFiles[i].InputStream);
if (image.Width > 1000)
{
str = OA_Class.Image.SavePicture(uploadFiles[i], "~/images/Images/", 1000, 0);//压缩图片
}
else
{
str = OA_Class.Image.SavePicture(uploadFiles[i], "~/images/Images/", 0, 0);//不压缩
}
arr.Add(str);
}
}

这种写法会在System.Drawing.Image image = System.Drawing.Image.FromStream(uploadFiles[i].InputStream);报错,报的错为参数无效
if (FileUpload1.HasFile)
{
string filepath = Server.MapPath("~/images/Images/");
HttpFileCollection uploadFiles = Request.Files;
for (int i = 0; i < uploadFiles.Count; i++)
{
str = OA_Class.Image.SavePicture(uploadFiles[i], "~/images/Images/", 1000, 0);//压缩图片
arr.Add(str);
}
OnePicture = "'" + arr[0] + "'";
}

这种写法运行通过,但图片并没有进行保存,数据库中图片名也是空的
if (FileUpload1.HasFile)
{
string filepath = Server.MapPath("~/images/Images/");
HttpFileCollection uploadFiles = Request.Files;
for (int i = 0; i < uploadFiles.Count; i++)
{
uploadFiles[i].SaveAs(filepath + uploadFiles[i].FileName);
str = uploadFiles[i].FileName;
arr.Add(str);
}
OnePicture = "'" + arr[0] + "'";
}

这种写法运行通过,文件保存成功,数据库图片名也正常,但是我要压缩图片啊!
以上写法在电脑上没有任何问题,全都运行正常
...全文
599 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
枫之幻月 2018-04-24
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
这个代码是 asp.net 代码,不是手机代码。手机访问也照样会在你的asp.net 端调试。所以这个借口不成立。
可是电脑上运行是正常的,我要怎么在电脑上用vs调试?
  • 打赏
  • 举报
回复
引用 楼主 qq_23540209 的回复:
因为只有在手机上才出问题,我都没法调试,只能把过程放出来了
这个代码是 asp.net 代码,不是手机代码。手机访问也照样会在你的asp.net 端调试。所以这个借口不成立。
  • 打赏
  • 举报
回复
你写了一堆的自己的想法,但是搞开发,就是“首先要知道抛出的代码具体是哪一行、哪一个变量”这么简单。只知道说“结果”是非需求,但是不去贴出来调试跟踪具体哪一行代码出了问题,这就不是专业地搞开发了。
  • 打赏
  • 举报
回复
你写的这个 try....catch 就是你丧失了调试能力。 去掉 try...catch,用 vs 调试,贴出调试过程(堆栈、各层入口参数跟踪),起码你知道具体哪一行代码抛出的异常。写代码不等于会开发,会调试才刚刚开始开发。
枫之幻月 2018-04-24
  • 打赏
  • 举报
回复
OA_Class.Image.SavePicture方法
public static string SavePicture(HttpPostedFile postedFile, string file, int width, int height)
        {
            string prefix = System.IO.Path.GetExtension(postedFile.FileName).ToLower();
            string fileName = "";
            string strFileName = OA_Class.executeNonQuery.NewFileName(postedFile);
            fileName = HttpContext.Current.Server.MapPath(file);
            try
            {
                //获取上传图片的大小
                Stream PicStream = postedFile.InputStream;

                if (width == 0 && height != 0)//指定高 按比例缩放
                {
                    MakeThumbnail(PicStream, fileName + strFileName, width, height, "H", prefix);
                }
                else if (width != 0 && height == 0)//指定宽 按比例缩放
                {
                    MakeThumbnail(PicStream, fileName + strFileName, width, height, "W", prefix);
                }
                else if (width == 0 && height == 0)//不缩放
                {
                    postedFile.SaveAs(fileName + strFileName);
                }
                else//指定宽高裁剪(不会变形)
                {
                    MakeThumbnail(PicStream, fileName + strFileName, width, height, "Cut", prefix);
                }
                //返回图片名

                return strFileName;
            }
            catch
            {
                return null;
            }
        }
MakeThumbnail方法
private static void MakeThumbnail(Stream PicStream, string thumbnailPath, int width, int height, string mode, string PicExtension)
        {
            System.Drawing.Image originalImage = System.Drawing.Image.FromStream(PicStream);
            int towidth = width;
            int toheight = height;

            int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;

            switch (mode)
            {
                case "HW"://指定高宽缩放(可能变形) 
                    break;
                case "W"://指定宽,高按比例 
                    toheight = originalImage.Height * width / originalImage.Width;
                    break;
                case "H"://指定高,宽按比例
                    towidth = originalImage.Width * height / originalImage.Height;
                    break;
                case "Cut"://指定高宽裁减(不变形) 

                    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                    {
                        oh = originalImage.Height;
                        ow = originalImage.Height * towidth / toheight;
                        y = 0;
                        x = (originalImage.Width - ow) / 2;
                    }
                    else
                    {
                        ow = originalImage.Width;
                        oh = originalImage.Width * height / towidth;
                        x = 0;
                        y = (originalImage.Height - oh) / 2;
                    }
                    break;
                default:
                    break;
            }

            //新建一个bmp图片
            System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

            //新建一个画板
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

            //设置高质量插值法
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

            //设置高质量,低速度呈现平滑程度  昆明卓联科技(网站、软件开发)
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            //清空画布并以透明背景色填充
            g.Clear(System.Drawing.Color.Transparent);

            //在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
            new System.Drawing.Rectangle(x, y, ow, oh),
            System.Drawing.GraphicsUnit.Pixel);

            try
            {
                //根据原来的图片格式,保存为原图片格式
                switch (PicExtension.ToLower())
                {
                    case "jpg":
                        //以jpg格式保存缩略图
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case "jpeg":
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case "pjpeg":
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case "gif":
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif);
                        break;
                    case "bmp":
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp);
                        break;
                    case "png":
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png);
                        break;
                    default:
                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                }

            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
        }
枫之幻月 2018-04-24
  • 打赏
  • 举报
回复
那个,第三中写法表示uploadFiles[i]获取到了数据。 第一种写法和第二种写法只是为了给大佬们提供思路,最后我还是需要根据图片尺寸来决定是否压缩,也就是需要找到第一种写法的错误原因,最后的说需要压缩图片也是为了说明这种写法不符合需求
枫之幻月 2018-04-24
  • 打赏
  • 举报
回复
刚刚确定直接调用手机摄像头拍照上传的话,程序能正常运行了,这是为什么啊?
枫之幻月 2018-04-24
  • 打赏
  • 举报
回复
只在手机上出现问题,电脑上运行正常的情况下,我要怎么用vs调试才能找出手机上的错误啊

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧