首页 新闻 搜索 专区 学院

C# 如何把后台获取的图片传递到前端并显示?

0
悬赏园豆:40 [已解决问题] 解决于 2018-10-15 15:10

网上查了好多资料,说有两种方法:
1.将图片的做成二进制传到前端
2.将图片的url传到前端,推荐使用
我也使用了第二种传递url,启动的时候会报错:Not allowed to load local resource
像这样的情况,应该如何解决

sunzhengbo的主页 sunzhengbo | 初学一级 | 园豆:153
提问于:2018-09-06 09:28

来点代码

Mad_Rabbit 2年前
< >
分享
最佳答案
0

看你图片明显路径不对啊,浏览器怎么能直接读你服务器磁盘文件呢。直接用流赋值给src也是一样的

收获园豆:30
去海边生活 | 初学一级 |园豆:62 | 2018-09-29 15:17
其他回答(5)
0

1路径不对是吧?2配置服务器好像默认允许可以加载的。什么服务器?

收获园豆:10
凡事无绝对! | 园豆:9 (初学一级) | 2018-09-06 09:41

路径是没有问题,问题是浏览器保护机制,就是不让加载本地资源?

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 10:08

@听风2008:路径是什么啊? 得是绝对路径。。 不能是相对路径

支持(0) 反对(0) 凡事无绝对! | 园豆:9 (初学一级) | 2018-09-06 10:28

@凡事无绝对!: 就是绝对路径

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 12:49

@听风2008: 绝对路径是带域名,把路径发出来我看一下。浏览器能看到么?

支持(0) 反对(0) 凡事无绝对! | 园豆:9 (初学一级) | 2018-09-06 12:52

@凡事无绝对!: 具体怎么操作,有demo吗?我的路径就是本地磁盘的路径,浏览

器是可以到的

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 13:43

@听风2008: 需要是服务绝对路径。例如 你那个是本机的绝对路径,获取不到的、例如 https://img.alicdn.com/bao/uploaded/TB1Wy5mo67nBKNjSZLeSuvxCFXa.jpg

支持(0) 反对(0) 凡事无绝对! | 园豆:9 (初学一级) | 2018-09-06 13:46

@凡事无绝对!: 嗯嗯,我看到有人说需要把图片上传到服务器上,还说什么配置虚拟目录,问题就是到这边卡住了,不知道怎么往下走。

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 15:51

@凡事无绝对!: 或者说您这样的服务器路径是怎么做出来的???

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 15:52

@听风2008: 有个方法是将绝对路径转到服务器路径。Server.MapPath(upPath) 这个方法就是把你那个路径变成服务器路径。var domain = System.Configuration.ConfigurationManager.AppSettings["Domain"];
HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;
string upFileType = "|image/bmp|image/x-png|image/pjpeg|image/gif|image/png|image/jpeg|";
int upLength = 5;
string imgPath = "";
string upPath = "/upload/"; //上传文件路径
if (hfc.Count > 0)
{
string fileContentType = hfc[0].ContentType; //文件类型
if (upFileType.IndexOf(fileContentType.ToLower()) > 0)
{
string name = hfc[0].FileName; // 客户端文件路径
FileInfo file = new FileInfo(name);

                string fileName = name.Substring(0, name.IndexOf(file.Extension)) + "_" + DateTime.Now.ToString("yyyyMMddhhmmssfff") + file.Extension; // 文件名称,当前时间(yyyyMMddhhmmssfff)
                string webFilePath = Server.MapPath(upPath) + fileName;        // 服务器端文件路径
                string FilePath = upPath + fileName;   //页面中使用的路径

                if ((hfc[0].ContentLength / (1024 * 1024)) > upLength)
                {
                    throw new Exception("大小超出 " + upLength + " M的限制,请处理后再上传!");

                }
                try
                {

                    hfc[0].SaveAs(webFilePath);
                    imgPath = domain + FilePath;
                }
                catch (Exception ex)
                {
                    //ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件上传失败" + ex.Message + "');", true);
                    throw new Exception("提示:文件上传失败" + ex.Message);
                }

            }
        }
        return imgPath;
支持(0) 反对(0) 凡事无绝对! | 园豆:9 (初学一级) | 2018-09-06 15:55

@凡事无绝对!: 您好,这个demo您测试过吗?我跑不起来

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-10 13:35
0

传的url不对,要是 http 或 https 开头的

dudu | 园豆:38801 (高人七级) | 2018-09-06 10:13

我的url是本地的绝对路径

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 12:50
0

没有所谓1和2。只是1是使用你的函数实现的,而2是使用托管环境以外的默认函数实现而已,本质一样。Not Allow只是权限配置等问题。通过分析你会发现2会请求两次。

花飘水流兮 | 园豆:11779 (专家六级) | 2018-09-06 12:33

那我要是想用第二种方式,怎么实现呢?

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 12:50

@听风2008: 你浏览器怎么打开 把 图片固定名称 改成参数不就行了,有什么可思考的

支持(0) 反对(0) 花飘水流兮 | 园豆:11779 (专家六级) | 2018-09-06 13:13

@花飘水流兮: 有没有具体的demo,您说的我不是很明白

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-06 13:44
0

浏览器脱机就Ok啦,也可以提高安全等级。

中文代码 | 园豆:951 (小虾三级) | 2018-09-07 14:46
0

图片存个地方
前端加载正确路径

ycyzharry | 园豆:21611 (高人七级) | 2018-09-08 17:18

您所谓是正确路径指的是什么?

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-10 13:36

@听风2008: 路径能找到或打开图片

支持(0) 反对(0) ycyzharry | 园豆:21611 (高人七级) | 2018-09-11 08:42

@ycyzharry: 哥,我的错误信息是不允许我加载资源,并不是找不到资源,所以路径是肯定没问题的,楼上有位哥们说的有道理,将本地资源的目录转化成服务器路径,这个方法应该是可以的,但是我不会。

支持(0) 反对(0) sunzhengbo | 园豆:153 (初学一级) | 2018-09-11 10:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册