以下代展示了如何通过weaver.file.ImageFileManager读取泛附件文件信息和文件流.
如保通过DocViewPermission查询用户是否有相关权限
如何用ws…Respons,ResponseBuilder 返回文件流.
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.api.doc.detail.service.permission;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.hrm.User;
public class DownloadFileWithTokenService extends BaseBean{
Log logger = LogFactory.getLog(DownloadFileWithTokenService.class);
/**
*
* @param imagefileid
* @param user
* @return
* @throws ServletException
* @throws IOException
*/
public Response doload(int imagefileid, User user) throws ServletException, IOException {
Response response=null;
RecordSet rs = new RecordSet();
rs.executeQuery("select docid from DocImageFile where imagefileid=?", new Object[]{imagefileid});
int docId = 0;
if (rs.next()) {
docId = rs.getInt("docid");
}
/***
* 简单权限判断 这个是需在OA系统中设置 内容引擎-目录设置-文档目录-权限管理-默认共享。
*/
DocViewPermission permission = new DocViewPermission();
Map<String,Boolean> permissionItems = new HashMap<String, Boolean>(); ;
if (docId > 0) {
permissionItems = permission.getShareLevel(docId, user, false);
} else {
permissionItems.put(permission.READ, true);
permissionItems.put(permission.DOWNLOAD, false);
}
boolean var9 = (Boolean)permissionItems.get(permission.READ);
if (var9) {
ImageFileManager var10 = new ImageFileManager();
var10.resetParameter();
var10.getImageFileInfoById(imagefileid);
InputStream var11 = var10.getInputStream();
String var12 = var10.getImageFileName();
ResponseBuilder responseBuilder = null;
try {
responseBuilder =Response.ok(var11);
responseBuilder.header("Content-Disposition", "attachment;filename=" + URLEncoder.encode(var12, "UTF-8").replaceAll("\\+", "%20"));
responseBuilder.header("Content-Length", "" + var10.getFilesize());
responseBuilder.header("Cache-Control", "no-cache");
response = responseBuilder.build();
} catch (Exception var19) {
if(var11!=null) {
var11.close();
}
logger.error(var19);
}
}else {
logger.error(user.getLastname()+"没有"+imagefileid+"文件的权限");
response = Response.status(Response.Status.NOT_FOUND).entity(user.getLastname()+"没有"+imagefileid+"文件的权限").build();
}
return response;
}
}