`
tmj_159
  • 浏览: 707538 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

REST 图片流

 
阅读更多

写了个Spring rest 风格的 图片加载。

package cn.tang.demo.controller.image;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value = "/image/")
public class ImageCacheController {
	
		// for restful http://localhost:8888/rest/image/load?imageName=a.jpg
		@RequestMapping(value = "/load", method = RequestMethod.GET)
		public void imageLoad(@RequestParam(value = "imageName", required = true) String imageName, HttpServletRequest request, HttpServletResponse response)
				throws IOException {
			File f = new File("c://"+imageName);
			if (!f.exists()) {
				return;
			}
			FileInputStream fis = new FileInputStream(f);
			byte[] buffer = new byte[1024];
			int len =0;
			try {
				response.setHeader("Content-Type", "image/jpg;charset=UTF-8");
				ServletOutputStream outputStream = response.getOutputStream();
				
				while ((len=fis.read(buffer)) > 0) {
					outputStream.write(buffer, 0, len);
				}
				outputStream.flush();
				
			} finally {
				fis.close();
			}
			
		}

	// for restful http://localhost:8888/rest/image/a.jpg
	@RequestMapping(value = "/{name:\\S*\\.?\\S+}", method = RequestMethod.GET)
	public void helloMan(@PathVariable String imageName, HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		File f = new File("c://"+imageName);
		if (!f.exists()) {
			return;
		}
		FileInputStream fis = new FileInputStream(f);
		byte[] buffer = new byte[1024];
		int len =0;
		try {
			response.setHeader("Content-Type", "image/jpg;charset=UTF-8");
			ServletOutputStream outputStream = response.getOutputStream();
			
			while ((len=fis.read(buffer)) > 0) {
				outputStream.write(buffer, 0, len);
			}
			outputStream.flush();
			
		} finally {
			fis.close();
		}
		
	}

}

   这个是最基本的图片获取方式,我们可以把图片放入缓存中,然后通过读缓存而不是读文件来获取图片。

 

分享到:
评论

相关推荐

    activiti rest upload picture

    在“activiti rest upload picture”这个场景中,我们将讨论如何利用Activiti的工作流引擎,通过REST API来上传图片。 首先,理解Activiti的工作流程: 1. **Activiti模型**:Activiti使用 BPMN 2.0(Business ...

    REST服务Post创建以及调用小例子

    3. 通过`GetRequestStream()`方法获取流,并将POST数据写入。 4. 使用`GetResponse()`方法获取响应,并读取响应内容。 #### 四、总结 通过以上内容,我们可以看到如何创建一个基于WCF的REST服务,并通过ASP.NET...

    InsightFace-REST-master.zip

    5. `data`或`test`目录:可能包含测试图片、标注文件或其他输入数据。 6. `README.md`:项目介绍、使用指南和贡献者信息。 7. `config.py`或`.json`文件:配置参数,如服务器端口、模型路径等。 深入研究这个项目,...

    springboot-rest.zip

    标题 "springboot-rest.zip" 暗示了这个压缩包主要包含有关于Spring Boot与RESTful API集成的内容...此外,"博客_files"目录可能包含了图片、CSS样式表和JavaScript文件,这些资源对理解文章内容和示例可能非常有帮助。

    Django+RestFramework API接口及接口文档并返回json数据操作

    在本文中,我们将深入探讨如何使用Django框架与Django Rest Framework(DRF)来创建API接口,并生成接口文档以及返回JSON数据。首先,我们来看看Django和DRF是什么。 Django是一个用Python编写的高级Web框架,它...

    网页在Oracle中存取图片

    1. ORDS(Oracle REST Data Services):Oracle提供的REST服务可以方便地将数据库中的BLOB数据暴露为HTTP接口,简化图片的Web访问。 2. 图片服务:考虑使用专门的图片服务(如Amazon S3或阿里云OSS),将图片存储在...

    webservice 获取图片

    - **解析流并显示图片**:接收到字节流后,将其转换回图片格式,通常会用到ByteArrayInputStream和ImageIO类。最后,将图片数据显示在GUI(图形用户界面)或者网页上。 4. **安全与性能优化**: - **安全**:为了...

    图片上传系统 上传图片至数据库上传图片至数据库上传图片至数据库

    - 文件流处理:服务器接收文件流,避免一次性加载整个文件到内存,降低内存消耗。 - 安全检查:验证文件类型,防止恶意文件上传,比如通过MIME类型检查。 - 图片处理:后端可以进一步调整图片大小、质量,甚至...

    Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice

    3. 我的任务提供Rest服务,完成日常的工作管理,通过定时调度平台,动态生成我的任务、循环周期任务、定时邮催提醒完成任务等 4. 文件上传、多线程下载服务化、发送邮件、短信服务化、部门信息服务化、产品信息服务...

    REST_资源指南_restful

    在RESTful架构中,资源是唯一的,可以是任何信息实体,如文档、图片、服务等。资源由URI(统一资源标识符)唯一标识。当客户端需要对服务器上的资源执行操作时,它通过发送标准的HTTP方法(如GET、POST、PUT、DELETE...

    Java抓取百度图片

    5. **下载图片**:遍历图片URL列表,对每个URL发起一个新的GET请求,然后将响应流保存到本地文件系统,以完成图片下载。 6. **错误处理和优化**:考虑可能的网络错误,如超时、重定向等,并添加适当的异常处理。...

    SharePoint站点图片轮转器

    例如,可以使用jQuery库来处理图片轮转的动画效果,同时利用SharePoint的REST API或SOAP服务来获取图片库中的数据。 为了实现这个轮转器,开发人员可能会遵循以下步骤: 1. 创建SharePoint列表或图片库,存储要...

    drip-minio:minio rest服务java8

    Minio是一个开源的对象存储服务器,它兼容Amazon S3 API,适用于存储和检索大量非结构化数据,如图片、文档和视频。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议...

    java 批量上传图片

    - RESTful API:多数情况下,服务器端会有对应的REST接口接收图片,使用HTTP的POST或PUT方法进行上传。 5. **文件切片上传**: - 对于大文件,可以考虑分块上传。Java可以利用`RandomAccessFile`实现文件切片,...

    .net 服务器端通用图片上传服务

    图片上传是指服务端接收并处理图片文件的上传请求,这通常涉及到文件流处理、文件大小限制、格式检查、错误处理以及安全存储等方面。服务则意味着这是一个可以被多次调用、处理不同用户请求的可复用组件。 从压缩包...

    企信服务器图片展示和文件下载.docx

    `@RequestMapping`注解指定了一个处理GET请求的端点,该端点返回的是一个JPEG格式的图片流。在Java代码中,我们看到服务器会根据请求参数`fj_id`查询数据库获取文件信息,并通过`hibernateDao`执行SQL查询。一旦获取...

    c# js 图片翻转调用

    - **图片处理逻辑**:例如,实现图片翻转的算法,并将处理后的图片流发送给前端显示。 - **API接口设计**:定义清晰的API接口供前端调用,比如获取图片列表、上传新图片等功能。 ### 二、代码分析与扩展 #### 1. ...

    通过MyBatis读取数据库数据并提供rest接口访问

    在本文中,我们将深入探讨如何使用MyBatis框架来读取数据库数据,并通过RESTful接口对外提供服务。...MyBatis的灵活性使得开发者能够自定义复杂的SQL查询,而REST接口则提供了现代应用程序所需的互操作性和可扩展性。

    easyui实现的Activiti工作流引擎web版流程设计器

    2. **模型加载和保存**:通过调用Activiti的REST API或服务接口,加载XML流程定义文件,并将其显示为图形。同样,当用户完成设计后,需要将流程图的数据转换回XML并保存到Activiti服务器。 3. **元素操作**:实现...

    Java生成二维码图片

    例如,后端可以提供一个REST API,接收请求并返回二维码图片的二进制流,前端则调用该API并设置标签的src属性为API的URL。 ```html ``` 在这个例子中,前端发送一个GET请求到"/api/qrcode",携带查询参数"data",...

Global site tag (gtag.js) - Google Analytics