永中DCS产品文档

  • Home
  • 永中DCS产品文档
  • By: admin

DCS服务

运行环境:

jre8、apache-tomcat-8.0.26、nginx以及转换所需的字体。

部署流程(linux下):

▪ 安装JDK8 这里使用的是压缩版的JDK 解压文件

tar -zxvf jdk-8u60-linux-x64.tar.gz 修改环境变量 vi /etc/profile

JAVA_HOME=/home/admin/web/jdk8

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

并让配置文件生效

source /etc/profile

在终端使用echo命令检查环境变量设置情况:

#echo $JAVA_HOME

#echo $CLASSPATH

#echo $PATH

检查JDK是否安装成功:

#java –version

▪ Tomcat的配置部署 解压文件

tar -zxvf apache-tomcat-8.0.26.tar.gz

▪ 部署DCS工程 把永中DCS工程目录复制到tomcat

的webapp目录下。

修改${tomcat.home}\conf\server.xml文件.在Host节点下增加如下参考代码:

reloadable="true"/> 根据需要修改项目中

${dcs.web}\WEB-INF\config.properties和log4j.properties的配置。需要在目录/usr/X11R6/lib/X11/fonts/TrueType下加入字体文件。

启动tomcat后,访问http://localhost:8080/dcs.web 即可看到“在线文档预览示例”页面。

▪ 安装nginx

tar -zxvf nginx-1.9.2.tar.gz

进入 nginx 文件夹 cd nginx-1.9.2 执行 ./configure 可能会遇到系统缺少库

问题: 1:./configure: err: C compiler cc is not found

缺少gc++库文件

su root

cd /

yum -y install gcc gcc-c++ autoconf automak

等待 complete 2:./configure: error: the HTTP rewrite

module requires the PCRE library

su root

yum -y intall pcre pcre-devel

等待complete 3:./configure:error: the HTTP gzip

module requires the zlib library

yun -y install zlib zlib-devel

解决所有问题后 再次

./configure

make

make install

安装完成后对/usr/local/nginx/conf/nginx.conf 配置文件进行所需配置。

集群配置 按以上步骤在多台服务器上安装配置好tomcat 并启动,确认tomcat

启动成功,在nginx服务配置文件nginx.conf中进行集群相关配置。

例如三台服务器,其中192.168.1.100为ngnix服务器,192.168.1.101为第一台DCS服务器,192.168.1.102为第二台服务器,

则nginx.conf相关配置为: #设定负载均衡的服务器列表

upstream

tomcat_server {

server 192.168.1.101:80;

server 192.168.1.102:80;

}

注意: windows 及 mac os下,jdk请尽量使用安装包.exe,.dmg安装,安装程序将自动配置环境变量。

linux下如果遇到如下提示 -bash: /usr/java/jdk1.8.0_65/bin/java:

Permission denied 则表明文件或文件夹没权限,请执行如下操作 chmod -R 777

/usr/java/jdk1.8.0_65

部署流程(windows下):

▪ 安装JDK8

首先下载JDK,下载页面地址:

http://www.oracle.com/technetwork/java/javase/downloads/index.html;

修改环境变量:右击“计算机”,在右键菜单中点击“属性”,在弹出窗口中点击“高级系统设置”,选择“高级”选项卡,点击“环境变量”按钮;

需要设置三个属性“JAVA_HOME”、“path”、“classpath”。 一:点“新建”,然后在变量名写上JAVA_HOME,然后在变量值写入刚才安装的路径“C:\jdk1.8”。

二:其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,(其中“%JAVA_HOME%”的意思为刚才设置JAVA_HOME的值),也可以直接写上“C:\jdk1.6\bin”

三: 最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or

lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar

(要加.表示当前路径)”,与相同“%JAVA_HOME%有相同意思” 检查JDK是否安装成功:

#java –version

▪ Tomcat的配置部署

tomcat下载页面地址:

http://tomcat.apache.org/

解压文件 ▪ 部署DCS工程

把永中DCS工程目录复制到tomcat 的webapp目录下。

修改${tomcat.home}\conf\server.xml文件.在Host节点下增加如下参考代码:

reloadable="true"/> 根据需要修改项目中

${dcs.web}\WEB-INF\config.properties和log4j.properties的配置。需要在目录/usr/X11R6/lib/X11/fonts/TrueType下加入字体文件。

启动tomcat后,访问http://localhost:8080/dcs.web 即可看到“在线文档预览示例”页面。

▪ 安装nginx

nginx下载页面地址:

http://nginx.org/

安装完成后对/usr/local/nginx/conf/nginx.conf 配置文件进行所需配置。

集群配置 按以上步骤在多台服务器上安装配置好tomcat 并启动,确认tomcat

启动成功,在nginx服务配置文件nginx.conf中进行集群相关配置。

例如三台服务器,其中192.168.1.100为ngnix服务器,192.168.1.101为第一台DCS服务器,192.168.1.102为第二台服务器,

则nginx.conf相关配置为: #设定负载均衡的服务器列表

upstream

tomcat_server {

server 192.168.1.101:80;

server 192.168.1.102:80;

}

接口说明:

▪ 上传文档

请求地址:

POST http://服务器地址/upload

例如:http://localhost:8080/dcs.web/upload

上传您要在线预览的文档。

参数:

file - 文件作为multi-part POST请求参数,用于上传本地文档 (必须)

convertType - 转换类型参数(必须)

▪ URL预览文档

请求地址: POST http://服务器地址/onlinefile 参数:

downloadUrl - 文档URL,用于预览网络文档。此URL应为编码(UTF-8 URL-encoded)后的URL。

convertType - 转换类型参数

(cookie) - (非必传)下载文件所需的cookie信息

▪ 服务器本地转换

请求地址: POST http://服务器地址/convert 参数:

inputDir - 文档在服务器上的路径(相对于配置文件中input的相对路径)

(mergeInput) - (非必传)使用文档合并功能时,需要合并的文档路径同inputDir,可传多个值,以英文,分隔

convertType - 转换类型参数

▪ html网页转pdf

请求地址: POST http://服务器地址/htmltopdf 参数:

htmlurl - 需要转换的html地址

通用参数不适用于此接口

▪ 文档转swf

请求地址: POST http://服务器地址/anytoswf 参数:

Type - upload/onlinefile/convert

isPic - 是否以图片形式展示

upload-文件上传参数:

file - 文件作为multi-part POST请求参数,用于上传本地文档 (必须)

onlinefile-Url下载参数:

downloadUrl - 文档URL,用于预览网络文档。此URL应为编码(UTF-8 URL-encoded)后的URL。

convert-服务器本地转换参数:

inputDir - 文档在服务器上的路径(相对于配置文件中input的相对路径)

通用参数不适用于此接口

▪ 获取授权码

请求地址: http://服务器地址/getRegisterCode

▪ 查询版本及授权到期情况

请求地址: http://服务器地址/queryInfo

▪ 查询实时可用实例个数

请求地址: http://服务器地址/countConverter

<通用参数>

htmlName - 转换成html显示的文档名字(默认值:原文档名字)

htmlTitle - 转换成html显示的htmltitle名字(默认值:永中文档转换服务)

isCopy - 是否防复制(1是0否,默认0)

isShowAll - 是否一次性加载(1是0否,默认0(分页加载))

isZip - 是否提供打包下载(1是0否,默认0),返回值增加 zipUrl结果

isShowTitle - 是否显示文件名(1是0否,默认1)

isDelSrc - 是否删除源文件(1是0否,默认0)

isDelTarget - 是否删除生成的文件(1是0否,默认0,需要isZip为1时才生效)

isSourceDir - 是否在结果集中返回源文档相对路径

isShowList - 是否显示文档目录(1是0否,默认0)

showFooter - 是否显示页脚(1是0否)

encoding - 转换时所需要的编码(默认值:UTF-8)

password - 转换文档如有密码通过这个参数传入密码

callbackName - 用于跨域调用时设置回调函数的名字(会改变返回值的样式)

pages - 应用于转换成多个文件时(如MS到图片格式,转多个SVG),以 英文标识,逗号 分隔 ;-表示 范围 例如(1,3-5 表示 1,3,4,5)

position - 静态水印的位置(ofd预览)

wmSize - 设置水印尺寸默认100(int类型)

wmContent - 设置水印文字内容默认水印

wmFont - 设置水印字体

wmSpace - 设置静态水印间距

wmTransparency- 设置静态水印透明度

wmSuspend-静态文件内容是否在文字上方还是下方,默认在下方,输入1是上方

wmRotate - 设置静态水印内容旋转角度

wmWord - word给word加入文字或图片水印,默认是不加,设置为1是加入水印

wmTileEffect - 是否是平铺效果,默认是的,0表示不是平铺(显示为一个水印)

wmRgb - 颜色是否使用rgb方式,默认是0,不选,1是使用

wmRgbRed - rgb红范围是0~255

wmRgbGreen - rgb绿范围是0~255

wmRgbBlue - rgb蓝 范围是0~255

zoom - 设置图片的缩放比例(默认1f)

wmColor - 设置水印颜色(int类型)

1,"黑色"、2,"蓝色"、3,"青色"、4,"深灰" 、5,"灰色"、6,"绿色"、7,"浅灰" 、8,"品红"、9,"橙色"、10,"粉红"、11,"红色"、12,"白色" 、13,"黄色"

转换类型参数说明:

wmPicPath - 设置图片水印的图片路径(相对于配置文件中WmImagePath的相对路径)

acceptTracks - 是否显示文档批注(1显示0不显示)

isHideBlank - 是否隐藏空白(1隐藏0不隐藏)

isVertical - 是否竖排(1是0否,默认0)

isPrint - 是否显示打印(1是0否,默认1)

isDownload - 生成页面是否提供原文档下载(1是0否,默认0)

htmlPath - 自定义生成html中的相对路径

isShowNum - 是否显示总页数(1显示,0不显示,默认1)

dynamicMark - 动态水印内容

dmXextra - 动态水印x轴内容之间距离

dmYextra - 动态水印y轴内容之间距离

dmFontSize - 动态水印的文字大小

dmAlpha - 动态水印的透明度(范围是0到1)

dmAngle - 动态水印旋转角度

dmFont - 动态水印字体

dmColor - 动态水印颜色,rgb方式,如rgb(0,0,0),#000000

destinationName - 自定义生成的文件名(不需要后缀,不推荐使用)

appendPath - 自定义在设置的output路径的基础上追加路径(不推荐使用)

antiDownload - 生成页面是否防下载(1是0否,默认0)

isFullScreen - 是否全屏(1是0否,默认0)

pdfTitle - 设置生成pdf时pdf的标题

pdfAuthor - 设置生成pdf时pdf的作者

pdfSubject - 设置生成pdf时pdf的主题

pdfKeyword - 设置生成pdf时pdf的关键字

sourceReplace - 文档中需要被替换的内容,以英文,分隔

targetReplace - 文档中要替换的内容,以英文,分隔,和sourceReplace对应

isAsync - 是否后台异步转换

compressedSuffix - 压缩包后缀名

supportCache - 是否开启缓存(1是0否,默认0)

isShowGridline - 是否添加表格边框(1是0否,默认0)

isSignature - 是否进入签批模式(1是0否)

suffix - 传入后缀名(对于上传的文件没有后缀名,我们可以根据这个参数强制修改)

isRar5 - 是否使用rar5的方式解压

imageType;//图片转图片,生成图片的后缀名,默认是jpg

wordEdit;//word转word之后,设置是否可编辑,默认可以编辑,1不可以编辑

isFirstImage;//加入图片水印,设置是否是第一页加入,默认不是,为1时就是在第一页加入

isExcelWidth;//调整excel单元行的宽度,默认不调整,当为1时调整

isPdfBmp;//生成pdf是否是以绘图的方式,默认不是,设置为1是的

isAshPlacing;//对word生成word的红头文件做置灰处理,默认不置灰,1置灰

isPdfA4;//office格式生成pdf,设置每一页为A4大小,默认不是,1是

convertType参数取值说明:

0-----文档格式到高清html的转换

1-----文档格式到html的转换

2-----文档格式到txt的转换

3-----文档格式到pdf的转换

4-----文档格式到gif的转换

5-----文档格式到png的转换

6-----文档格式到jpg的转换

7-----文档格式到tiff的转换

8-----文档格式到bmp的转换

9-----pdf文档格式到gif的转换

10----pdf文档格式到png的转换

11----pdf文档格式到jpg的转换

12----pdf文档格式到tiff的转换

13----pdf文档格式到bmp的转换

14----pdf文档格式到html的转换

15----html文档格式到微软文档格式的转换

16----文档转换多个SVG返回分页加载页面(模版)

17----tif文件转成html

18----文档转换多个SVG

19----压缩文件到html的转换(模版)

20----PDF文件到html的转换(模版)

21----ofd文件到html的转换(模版)

22----两个doc文档合并

23----图片到html的转换

24----pdf文档格式到txt的转换

25----文档按页转换(高清版)

26----文档按页转换(标准版)

27----获取文档页码(MS文档)

28----获取pdf页码(PDF文件)

29----文档到ofd的转换

30----文档到html(图片)的转换

31----多个pdf文档合并

32----图片到pdf的转换

33----文档到文档的转换

34----pdf到pdf的转换

35----tif到html的转换(模板)

36----epub到html的转换(模板)

//需要安装相应的客户端

37----indd格式到pdf的转换

38----cad格式到pdf的转换

39----psd格式到pdf的转换

40----ai格式到pdf的转换

41----cdr格式到pdf的转换

42----其它格式转换到pdf格式预览(高清模板)

43----文档格式到uof的转换

44----图片到图片的转换(默认是jpg)

45----视频到mp4的转换

46----获取ofd里面的内容

47----图片转ofd

48----ofd转ofd(主要是插入元数据)

49----ofd的合并

50----html格式到pdf转换

51----html格式到ofd的转换

52----其它格式转换到ofd格式预览(高清模板)

返回参数说明: result - 返回代码,0成功,其他失败 message - 详细信息

data - 请求需要返回的数据 返回参数含义:

0-----转换成功

1-----找不到指定文档

2-----无法打开指定文档

3-----操作失败

4-----转换的文档为加密文档或密码有误,请重新添加password参数进行转换

5-----输出文档后缀错误

6-----授权文件过期

7-----转换超时,内容可能不完整

8-----无效参数

17-----上传失败

18-----下载文件失败

19-----文件过大

20-----下载成功

21-----删除失败

22-----获取文件信息失败

23-----URL编码失败

24-----生成文件名为空,有误或重名,请检查参数

25-----html转pdf转换失败

26-----获取授权码失败,请联系我们

27-----pdf转swf转换失败

28-----需要合并的文档不存在

29-----加密字符解码失败

30-----解压文件失败,该压缩文件不支持

31-----该文件转换异常已记录,转换失败

32-----服务器转换实例已用完,请稍后再试

33-----该文件是个空文件

34-----签批生成失败

35-----文件已被锁住,提交失败

36-----修改文件后缀名失败

37-----字节数组生成文件失败

38-----接收base64生成图片失败

39-----此ip无法预览

例如: 成功状态下:{

"result":0,"data":"http://xxxx域名/文件地址","message":"转换成功" }

失败状态下: { "result":7, "":"上传失败" }

调用说明:

WEB调用

Web调用需要配置jquery组件,用到ajax,需要配置ajaxfileupload.js。web要视具体情况来编写代码,下面代码为核心调用部分。

a) 上传本地文件转换代码示例

$('#upfilebtn2').fileupload({

url : 'upload',

dataType : 'json',

formData : {

convertType : "0"

},//如果需要额外添加参数可以在这里添加

done : function(e, data){

$.isLoading("hide");

},

});

b) URL文档转换代码示例

$.ajax({

url : "onlinefile",

data :{

"downloadUrl" : obj_value,

"convertType" : "0"

},

dataType : "json",

type : "post",

success : function(data){

$.isLoading("hide");

},

error : function(data){

$.isLoading("hide");

console.error(data)

}

});

客户端调用

客户端调用接口,需要用POST请求,具体代码需要视开发语言而定,下面列举部分语言作为参考。

Java调用

Java 调用代码适用于J2SE及Java EE。

需要用到的第三方工具包为:commons-logging-1.1.jar,httpclient-4.5.jar,httpcore-4.4.1.jar,httpmime-4.5.jar,如代码出现编译不过,请加入这四个包。

代码编译环境:Eclipse

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.URL;

import java.net.URLConnection;

import java.nio.charset.Charset;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.ParseException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.mime.HttpMultipartMode;

import org.apache.http.entity.mime.MultipartEntity;

import org.apache.http.entity.mime.content.FileBody;

import org.apache.http.entity.mime.content.StringBody;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.http.Consts;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

/**

* @Description: DCS文档转换服务Java调用代码示例

* @author LB

* @date 20151014

*/

public class DCSTest {

public static String sendPost(String serverurl,Map< String,String> param){

String result="";

List< NameValuePair> list = new ArrayList< NameValuePair>();

String fullurl ="";

//请求参数

for(String key : param.keySet()) {

list.add(new BasicNameValuePair(key, param.get(key)));

}

try{

fullurl = EntityUtils.toString(new UrlEncodedFormEntity(list, Consts.UTF_8));

}catch(Exception e){

result ="下载失败";

e.printStackTrace();

}

HttpPost httpget = new HttpPost(serverurl+"?"+fullurl);

CloseableHttpClient httpclient = HttpClients.createDefault();

try (CloseableHttpResponse response = httpclient.execute(httpget)){

if (response.getStatusLine().getStatusCode() == 200) {

HttpEntity resEntity = response.getEntity();

byte [] josn = EntityUtils.toByteArray(resEntity);

requestJson = new String(josn,"UTF-8");

EntityUtils.consume(resEntity);

}else{

result="下载失败";

}

} catch (Exception e) {

result="下载失败";

e.printStackTrace();

} finally{

httpget.releaseConnection();

}

return result;

}

/**

* 向指定 URL 上传文件POST方法的请求

*

* @param url 发送请求的 URL

* @param filepath 文件路径

* @param type 转换类型

* @return 所代表远程资源的响应结果, json数据

*/

public static String SubmitPost(String url, String filepath, String type) {

String requestJson = "";

HttpClient httpclient = new DefaultHttpClient();

try {

HttpPost httppost = new HttpPost(url);

FileBody file = new FileBody(new File(filepath));

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,

Charset.forName("UTF-8"));

reqEntity.addPart("file", file); // file为请求后台的File upload;属性

reqEntity.addPart("convertType", new StringBody(type, Charset.forName("UTF-8")));

httppost.setEntity(reqEntity);

HttpResponse response = httpclient.execute(httppost);

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode == HttpStatus.SC_OK) {

HttpEntity resEntity = response.getEntity();

byte [] josn = EntityUtils.toByteArray(resEntity);

requestJson = new String(josn,"UTF-8");

EntityUtils.consume(resEntity);

}

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

// requestJson = e.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

// requestJson = e.toString();

} finally {

try {

httpclient.getConnectionManager().shutdown();

} catch (Exception ignore) {

}

}

return requestJson;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

// 文件上传转换

String convertByFile = SubmitPost("http://dcs.yozosoft.com:80/upload", "C:/doctest.docx", "1");

// 网络地址转换

Map< String,String> map =new HashMap< String,String>();

map.put("downloadUrl", "http://www.yozodcs.com/example/doc/doctest.docx");

map.put("convertType", "1");

String convertByUrl =sendPost("http://dcs.yozosoft.com/onlinefile",map);

System.out.println(convertByFile);

System.out.println(convertByUrl);

}

}

httpclient4.x版本调用

//上传文件

public static String postParams(String url, String filepath, String type) {

CloseableHttpClient httpclient = HttpClients.createDefault();

CloseableHttpResponse response = null;

String result = null;

try {

HttpPost httpPost = new HttpPost(url);

MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

mEntityBuilder.setCharset(Charset.forName("UTF-8"));

FileBody file = new FileBody(new File(filepath));

mEntityBuilder.addPart("file", file);

StringBody comment = new StringBody(type, ContentType.APPLICATION_JSON);

mEntityBuilder.addPart("convertType", comment);

HttpEntity reqEntity =mEntityBuilder.build();

httpPost.setEntity(reqEntity);

response = httpclient.execute(httpPost);

int statusCode = response.getStatusLine().getStatusCode();

if (statusCode == HttpStatus.SC_OK) {

HttpEntity resEntity = response.getEntity();

byte [] josn = EntityUtils.toByteArray(resEntity);

result = new String(josn,"UTF-8");

EntityUtils.consume(resEntity);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

HttpClientUtils.closeQuietly(httpclient);

HttpClientUtils.closeQuietly(response);

}

return result;

}

C++调用

C++调用,需要通过socket封装http请求,本例展示URL调用方法,文件上传类似。

编译环境VS2005,win32控制台

// DCSTest.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include "DCSTest.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// 唯一的应用程序对象

CWinApp theApp;

#include iostream

#include string

#include Winsock2.h

using namespace std;

//函数声明

int httpPost(char* hostname, char* api, char* parameters);

//方法调用

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

int nRetCode = 0;

// initialize MFC and print and error on failure

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

{

// TODO: change error code to suit your needs

_tprintf(_T("Fatal Error: MFC initialization failed\n"));

return 1;

}

httpPost("dcs.yozosoft.com", "http://dcs.yozosoft.com:80/onlinefile", "downloadUrl=http://img.iyo

cloud.com:8000/doctest.docx&convertType=1");

system("pause");

return nRetCode;

}

/*

*post 请求

*参数:hostname 域名

* api 接口

* parameters 参数,请求参数应该是name1=value1&name2=value2 的形式。

*返回:正确0,否则,错误代码

*/

int httpPost(char* hostname, char* api, char* parameters)

{

WSADATA WsaData;

WSAStartup(0x0101, &WsaData);

//初始化socket

struct hostent* host_addr = gethostbyname(hostname);

if (host_addr == NULL)

{

cout<<"Unable to locate host";

return -103;

}

sockaddr_in sin;

sin.sin_family = AF_INET;

sin.sin_port = htons((unsigned short)80);

sin.sin_addr.s_addr = *((int*)*host_addr->h_addr_list);

int sock = socket(AF_INET, SOCK_STREAM, 0);

if (sock == -1)

{

return -100;

}

//建立连接

if (connect(sock, (const struct sockaddr *)&sin, sizeof(sockaddr_in) ) == -1)

{

cout<<"connect failed";

return -101;

}

//初始化发送信息

char send_str[2048] = {0};

//头信息

strcat(send_str, "POST ");

strcat(send_str, api);

strcat(send_str, " HTTP/1.1\r\n");

strcat(send_str, "Host: ");

strcat(send_str, hostname);

strcat(send_str, "\r\n");

strcat(send_str, "Connection: keep-alive\r\n");

char content_header[100];

sprintf(content_header,"Content-Length: %d\r\n", strlen(parameters));

strcat(send_str, content_header);

strcat(send_str, "Cache-Control: max-age=0\r\n");

strcat(send_str, "Origin: http://dcs.yozosoft.com\r\n");

strcat(send_str, "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like G

ecko) Chrome/15.0.849.0 Safari/535.1\r\n");

strcat(send_str, "Content-Type: application/x-www-form-urlencoded\r\n");

strcat(send_str, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r

\n");

strcat(send_str, "Referer: http://dcs.yozosoft.com/\r\n");

strcat(send_str, "Accept-Encoding: gzip,deflate,sdch\r\n");

strcat(send_str, "Accept-Language: zh-CN,zh;q=0.8\r\n");

//内容信息

strcat(send_str, "\r\n");

strcat(send_str, parameters);

if (send(sock, send_str, strlen(send_str),0) == -1)

{

cout<<"send failed";

return -101;

}

//获取返回信息

char recv_str[4096] = {0};

if (recv(sock, recv_str, sizeof(recv_str), 0) == -1)

{

cout<<"recv failed";

return -101;

}

cout<<"recv_str";

WSACleanup( );

return 0;

}

PHP调用

Ⅰ URL Post请求

$url="http://dcs.yozosoft.com/onlinefile";

$uri="http://dcs.yozosoft.com/example/doc/doctest.docx";

$response=onlinefile($url, $uri);

echo $response;

function onlinefile($url, $uri)

{

$data=array('downloadUrl'=> 'http://dcs.yozosoft.com/example/doc/doctest.docx','convertType'=> '1');

$data = http_build_query($data);

$params = array('http' => array(

'method' => 'POST',

'content' => $data

)

);

print_r($params);

$ctx = stream_context_create($params);

$fp = file_get_contents($url, false, $ctx);

if (!$fp) {

return false;

}

return $fp;

}

Ⅱ 上传文件

function send_file($url, $post = '', $file = '') {

$eol = "\r\n";

$mime_boundary = md5 ( time () );

$data = '';

$confirmation = '';

date_default_timezone_set ( "Asia/Beijing" );

$time = date ( "Y-m-d H:i:s " );

$post ["filename"] = $file [filename];

foreach ( $post as $key => $value ) {

$data .= '--' . $mime_boundary . $eol;

$data .= 'Content-Disposition: form-data; ';

$data .= "name=" . $key . $eol . $eol;

$data .= $value . $eol;

}

$data .= '--' . $mime_boundary . $eol;

$data .= 'Content-Disposition: form-data; name=' . $file [name] . '; filename=' . $file [fi

lename] . $eol;

$data .= 'Content-Type: text/plain' . $eol;

$data .= 'Content-Transfer-Encoding: binary' . $eol . $eol;

$data .= $file [filedata] . $eol;

$data .= "--" . $mime_boundary . "--" . $eol . $eol;

$params = array ('http' => array ('method' => 'POST', 'header' => 'Content-Type: multipart/

form-data;boundary=' . $mime_boundary . $eol, 'content' => $data ) );

$ctx = stream_context_create ( $params );

$response = file_get_contents ( $url, FILE_TEXT, $ctx );

return $response;

}

C#调用

Ⅰ URL Post请求

public string HttpPost(string Url, string postDataStr)

{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);

request.CookieContainer = cookie;

Stream myRequestStream = request.GetRequestStream();

StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));

myStreamWriter.Write(postDataStr);

myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

response.Cookies = cookie.GetCookies(response.ResponseUri);

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

myStreamReader.Close();

myResponseStream.Close();

return retString;

}

Ⅱ 上传文件

public static string HttpUploadFile(string url, string path, int Content_Type){

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);

byte[] bArr = new byte[fs.Length];

fs.Read(bArr, 0, bArr.Length);

fs.Close();

int pos = path.LastIndexOf("\\");

string fileName = path.Substring(pos + 1);

string boundary = "Boundary-b1ed-4060-99ls-fca7ff59c113"; //Could be any string

string Enter = "\r\n";

//part 1 注意 filename 不支持中文

string part1 = "--" + boundary + Enter

+ "Content-Type: text/plain" + Enter

+ "Content-Disposition: form-data; filename=\"" + "fileName.doc" + "\"; name=\"file\"" + Enter + Enter;

//part 2

string part2 = Enter

+ "--" + boundary + Enter

//+ "Content-Type: text/plain" + Enter

+ "Content-Disposition: form-data; name=\"convertType\"" + Enter + Enter

+ Content_Type + Enter

//以下是我们的通用参数

//start

+ "--" + boundary + Enter

+ "Content-Disposition: form-data; name=\"edcoding\"" + Enter + Enter

+ "utf-8" + Enter

//end

//start

/* + "--" + boundary + Enter

+ "Content-Disposition: form-data; name=\"htmlTitle\"" + Enter + Enter

+ "ZnuotechWord" + Enter

//end

//start

+ "--" + boundary + Enter

+ "Content-Disposition: form-data; name=\"isShowTitle\"" + Enter + Enter

+ "0" + Enter

//end

//start

+ "--" + boundary + Enter

+ "Content-Disposition: form-data; name=\"showFooter\"" + Enter + Enter

+ "0" + Enter */

//end

+ "--" + boundary + "--";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "POST";

request.ContentType = "multipart/form-data;boundary=" + boundary;

Stream myRequestStream = request.GetRequestStream();

myRequestStream.Write(Encoding.UTF8.GetBytes(part1.ToString()), 0, part1.Length);

myRequestStream.Write(bArr, 0, bArr.Length);

myRequestStream.Write(Encoding.UTF8.GetBytes(part2.ToString()), 0, part2.Length);

myRequestStream.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

//log(retString);

myStreamReader.Close();

myResponseStream.Close();

return retString;

}

static void Main() {

string url = "http://localhost:8080/dcs.web/upload";

string data = "C:/1.txt";

string result = HttpUploadFile(url, data, 1);

Console.WriteLine(result);

}

}

JVM调优说明 :

关于DCS中实例数的设置:我们一般推荐客户按照服务器的硬件条件来设置

例如服务器可用为4核配8G内存,并发可设置4-8个,我们推荐1核1g内存设置1个并发实例

tomcat的性能优化:

根据设置的实例数和服务器剩余内存数来设置jvm的内存设置

Ⅰ window下:

在window下的tomcat/bin下的catalina.bat中首行加入set JAVA_OPTS=-Xms***m -Xmx***m

Ⅱ Linux下:

在linux下的tomcat/bin下的catalina.sh中首行加入JAVA_OPTS="$JAVA_OPT -Xms***m -Xmx***m"

其中Xms表示启动所需最小内存,Xmx表示可用最大内存,***根据实际情况设置