iT邦幫忙

0

Line Bot 圖片 url 之server端如何配置

大家好
我最近在實作line bot
但我在做傳送圖片時遇到一些問題
就是line bot 傳送圖片的 url
若我用平常寫網頁的圖片寫法
會只有電腦版的LINE可以顯示 手機板不行
我有試著用Java或node js做
但仍有一樣得結果
我該如何才能寫出圖片?(兩種皆可以)
麻煩大家指點 謝謝
以下為我目前兩端寫法:

  1. Java
	@RequestMapping(value = "/OutputPic")
	public void outputPic(HttpServletRequest req, HttpServletResponse res, @RequestParam String name) throws IOException{
		res.setContentType("image/JPEG");
		byte[] bytes = null;
		ServletOutputStream out = res.getOutputStream();
		System.out.println(name);
		InputStream in = req.getServletContext().getResourceAsStream("/images/" + name + ".jpg");
		bytes = new byte[in.available()];
		in.read(bytes);
		out.write(bytes);
		in.close();
	}
  1. nodejs
http.createServer(function(req, res){
  var request = url.parse(req.url, true);
  var pathname = request.pathname;
  console.log(pathname);
  var img = fs.readFileSync('./' + pathname);
  res.writeHead(200, {'Content-Type': 'image/jpg' });
  res.end(img, 'binary');
}).listen(8087, 'localhost');
傳圖片訊息,
通常是要用這樣子的格規樣式去送:
https://developers.line.me/en/docs/messaging-api/reference/#image-message
圖檔的大小、url長度、https都需符規格。

如果你的問題是:
java, node.js 所畫出來的圖檔,
是上述ImageMessage所指向的話,
該圖檔是全世界都可讀得到的網址或public IP?
而不是在NAT內的local的private網址裡,
無法從你問題裡知道
你的PC及手機是否都是同NAT內或都有public IP?
若基本的網路環境兩者不同,
當然可能會有你上述的問題發生。
抱歉未將問題描述清楚
我於此有用ngrok將此ip公開,
且用其他圖檔測試傳輸正常,
因此排除是此可能性,
謝謝您的用心回覆,
後續我發現應是圖片格式的問題,
我是用java畫出圖片再轉成jpg至本機,
電腦直接檢視正常
不知為何傳至line就變成手機無法檢視電腦可以
接著我試著轉成png反倒就可以了
還是覺得莫名*.*
再次謝謝您願意與我討論!!!!!!

尚未有邦友回答

立即登入回答