起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2912|回复: 8

[处理中2] 后台上传图片,前端页面如何显示呢?

[复制链接]

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
发表于 2016-5-24 11:17:48 | 显示全部楼层 |阅读模式
图1 , 第一张图是后台上传数据的页面,仿外卖后台管理做的。
图2 , 第二张图是前端显示数据的页面,类似于外卖的列表页。

图3, 第三张是 点击 图2 list组件 的行 进入详细页 ,问题就出在这里。
如何让图3显示相应的图片呀?
图1和图2都能实现,就是在图3 详细页显示对应的图片出问题
`3OSD]~`Z}VDPKNUC[TOP8N.png
@K]]PR1R3RA[INH1RXICTKM.png
@VQ~SQ(ETAN`V@~UVO7XM{P.png
qq:7953899

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-5-24 11:21:42 | 显示全部楼层
图3 :  image控件:bind-attr-src="$model.transUrl(newsData.val('picture'))"

Model.prototype.transUrl = function(picture) {
                 if(!picture)
                 return null;
                 var src = null;
                 if (picture !== null && picture !== "" && picture !== "[]") {
                         var imageJson = eval("("+picture+")");
                         var realFileName = imageJson.realFileName;
                         var storeFileName = imageJson.storeFileName;
                         var operateType = "browse";
                         var url = this.actionUrl + '?realFileName=' + realFileName + '&storeFileName=' + storeFileName;
                         src = require.toUrl(url);
                 }

                 return src;
        };


数据库中字段内容:[{"storeFileName":"C7149680646000019FF3D7A858B01007","realFileName":"Apple.png"}]
qq:7953899
回复 支持 反对

使用道具 举报

3

主题

6

帖子

28

积分

新手上路

Rank: 1

积分
28
QQ
发表于 2016-5-24 11:28:03 | 显示全部楼层
虽然不知道你再说什么看起很吊的样子 哈哈哈···
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-5-24 11:33:17 | 显示全部楼层
GET http://localhost:8080/baas/hy/attachment/Classes?realFileName=undefined&storeFileName=undefined 500 (Internal Server Error)

这个是打开详细页的报错信息

  1. package hy;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.sql.SQLException;

  7. import javax.naming.NamingException;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;

  10. import com.alibaba.fastjson.JSONObject;
  11. import com.justep.baas.action.ActionContext;

  12. public class Classes {
  13.         private static final int BUFFER_SIZE = 32768 * 8;        
  14.     public static JSONObject browsePicfile(JSONObject params, ActionContext context) throws SQLException, NamingException, IOException {
  15.             
  16.              System.out.println("browsePicfile is running...");
  17.              HttpServletRequest request = (HttpServletRequest)context.get(ActionContext.REQUEST);
  18.              HttpServletResponse response = (HttpServletResponse)context.get(ActionContext.RESPONSE);

  19.              //String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() ;
  20.              //String docStorePath = baasPath + ".." + File.separator + ".."+ File.separator + "model" +File.separator + "UI2" +File.separator + "touxiang" +File.separator+"img" ;
  21.             
  22.              String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + ".." + File.separator + "..";
  23.              String docStorePath = baasPath + File.separator + "model" +File.separator + "UI2" +File.separator + "69hsAdmin" +File.separator + "data" + File.separator + "attachmentSimple";
  24.             
  25.              String realFileName = request.getParameter("realFileName");
  26.              String storeFileName = request.getParameter("storeFileName");
  27.                     
  28.             File file = new File(docStorePath + File.separator +realFileName + File.separator + storeFileName);
  29.             FileInputStream fis = new FileInputStream(file);
  30.    
  31.                     response.setHeader("Cache-Control", "pre-check=0, post-check=0, max-age=0");                        
  32.                     String fileNameKey = "filename";               
  33.                     response.addHeader("Content-Disposition", "inline; "+fileNameKey+"="" + storeFileName + """);
  34.                     
  35.                     OutputStream os = response.getOutputStream();
  36.             byte[] buffer = new byte[BUFFER_SIZE];
  37.             try {
  38.                 int read;
  39.                 while ((read = fis.read(buffer)) != -1) {
  40.                         os.write(buffer, 0, read);
  41.                 }
  42.             } finally {
  43.                 fis.close();
  44.             }
  45.             return null;
  46.     }
  47. }
复制代码
qq:7953899
回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-5-24 13:09:09 | 显示全部楼层
Model.prototype.transUrl = function(picture) {
                 if(!picture)
                 return null;
                 var src = null;
                 if (picture !== null && picture !== "" && picture !== "[]") {
                         var imageJson = eval("("+picture+")");
                         var realFileName = imageJson.realFileName;
                         var storeFileName = imageJson.storeFileName;
                         var operateType = "browse";
                         var url = this.actionUrl + '?realFileName=' + realFileName + '&storeFileName=' + storeFileName;
                         src = require.toUrl(url);
                 }

                 return src;
        };

楼主以chrome中用js调试跟踪一下这段代码, 应该是realFileName和storeFileName返回undefined导致的, 因为imageJson是数组,需要改成
                         var realFileName = imageJson[0].realFileName;
                         var storeFileName = imageJson[0].storeFileName;
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-5-24 13:47:32 | 显示全部楼层
hecr 发表于 2016-5-24 13:09
Model.prototype.transUrl = function(picture) {
                 if(!picture)
                 return ...

原来是这样的  GET http://localhost:8080/baas/hy/attachment/Classes?realFileName=undefined&storeFileName=undefined 500 (Internal Server Error)

hecr知道之后,参数可以传过来了
GET http://localhost:8080/baas/hy/attachment/Classes?realFileName=new5.png&storeFileName=C7145A8BA56000014CEDB2C01000F670 500 (Internal Server Error)
qq:7953899
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-5-24 13:47:57 | 显示全部楼层
知道==指导
qq:7953899
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-5-24 14:14:42 | 显示全部楼层
不羁的风 发表于 2016-5-24 11:33
GET http://localhost:8080/baas/hy/attachment/Classes?realFileName=undefined&storeFileName=undefined  ...

为什么参数能传过来了  还是报错500啊?
qq:7953899
回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-5-24 15:17:32 | 显示全部楼层
这时, 你可以具体看看服务端,根据具体的错误分析一下,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-3 18:27 , Processed in 0.115858 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表