<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1369513704506202330</id><updated>2012-01-17T13:52:42.685+08:00</updated><category term='无线通讯'/><category term='数据库'/><category term='windows'/><category term='互联网'/><category term='优化'/><category term='营养'/><category term='.NET'/><category term='Delphi'/><category term='market'/><title type='text'>想要达到生活的境界</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default?start-index=101&amp;max-results=100'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>558</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-2270986656576204196</id><published>2012-01-17T13:52:00.001+08:00</published><updated>2012-01-17T13:52:42.769+08:00</updated><title type='text'>【转】sqlite fts3自定义分词器</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;a target="_blank" href="http://www.sqlite.org/"&gt;sqlite3&lt;/a&gt;通过使用&lt;a target="_blank" href="http://www.sqlite.org/fts3.html"&gt;fts3&lt;/a&gt;虚表支持全文搜索，默认支持simple和porter两种分词器，并提供了接口来自定义分词器。这里我们利用&lt;a target="_blank" href="http://code.google.com/p/pymmseg-cpp/"&gt;mmseg&lt;/a&gt;来构造自定义的中文分词器。&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  虽然sqlite在fts3_tokenizer.h中提供了各种接口供用户自定义分词器，但其并未提供c函数供用户来注册自定义的分词器，分词器的注册必须使用sql语句来完成。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  SELECT fts3_tokenizer(&amp;lt;tokenizer-name&amp;gt;, &amp;lt;sqlite3_tokenizer_module ptr&amp;gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  其中tokenizer-name是分词器的名称，sqlite3_tokenizer_module ptr只一个指向sqlite3_tokenizer_module结构的指针并且编码为SQL blob。下面是官方给出的注册函数：&lt;br&gt; int registerTokenizer(&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3 *db,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  char *zName,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  const sqlite3_tokenizer_module *p&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_stmt *pStmt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char *zSql = &amp;quot;SELECT fts3_tokenizer(?, ?)&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  rc = sqlite3_prepare_v2(db, zSql, -1, &amp;amp;pStmt, 0);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if( rc!=SQLITE_OK ){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_bind_blob(pStmt, 2, &amp;amp;p, sizeof(p), SQLITE_STATIC);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_step(pStmt);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  return sqlite3_finalize(pStmt);&lt;br&gt; } &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  要想实现自定义的分词器，最关键的时是得到指向sqlite3_tokenizer_module结构的一个指针，sqlite3_tokenizer_module结构体定义如下：&lt;br&gt; struct sqlite3_tokenizer_module {&lt;br&gt; int iVersion; //版本号，必须设置为0&lt;br&gt; int (*xCreate)( //创建虚表时自动调用并创建分词器&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int argc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char *const*argv,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_tokenizer **ppTokenizer&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; );&lt;br&gt; int (*xDestroy)(sqlite3_tokenizer *pTokenizer); //数据库连接关闭时自动调用，用于销毁资源&lt;br&gt; int (*xOpen)( //插入数据或检索时自动调用以进行分词&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_tok enizer *pTokenizer,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char *pInput, int nBytes,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_tokenizer_cursor **ppCursor &lt;br&gt; );&lt;/p&gt; &lt;p&gt;int (*xClose)(sqlite3_tokenizer_cursor *pCursor); //分词结果提取完毕后自动调用&lt;/p&gt; &lt;p&gt;int (*xNext)( //逐个提取分词结果&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_tokenizer_cursor *pCursor,&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char **ppToken, int *pnBytes,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int *piStartOffset, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int *piEndOffset, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int *piPosition &lt;br&gt; );&lt;br&gt; };&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  有几点需要注意的是：&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  1 分词引擎使用sql语句注册意味着每建立一个sqlite连接都必须注册一次分词器，对于需要使用词库的中文分词器来说也意味着巨大的内存消耗。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  2 在检索时分词结果的提取和语义的解析式交替进行的。例如我们搜索&amp;quot;kanif OR sqlite&amp;quot;的时候，引擎先将全部传入到分词器，在调用一次next获取到词 kanif后，在将词sqlite传入到分词器，直到全部解析完毕。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  3  由于中文分词本身的特殊性，例如&amp;quot;北京市&amp;quot;很有可能视为一个完整的词，这样在搜索&amp;quot;北京&amp;quot;的时候就无法获取到结果。如果分词器支持将&amp;quot;北京市&amp;quot;切分为&amp;quot;北 京市&amp;quot;和&amp;quot;北京&amp;quot;或者将十一月切分为&amp;quot;11月&amp;quot;和&amp;quot;十一&amp;quot;，那么需注意(*xNext)函数中的piStartOffset和piEndOffset参 数。经测试在插入数据的时候这两个参数无实际用途，但在查询的时候这两个参数决定了下一次的输入串。&lt;/p&gt; &lt;p&gt;附：&lt;br&gt; #include &amp;lt;assert.h&amp;gt;&lt;br&gt; #include &amp;lt;stdlib.h&amp;gt;&lt;br&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br&gt; #include &amp;lt;string.h&amp;gt;&lt;br&gt; #include &amp;lt;ctype.h&amp;gt;&lt;br&gt; #include &amp;lt;sys/types.h&amp;gt;&lt;/p&gt; &lt;p&gt;#include &amp;quot;fts3_tokenizer.h&amp;quot;&lt;br&gt; #include &amp;quot;mmseg/mmseg.cpp&amp;quot;&lt;/p&gt; &lt;p&gt;static bool loadDic = true;&lt;/p&gt; &lt;p&gt;typedef struct cus_tokenizer {&lt;br&gt; sqlite3_tokenizer base;&lt;br&gt; } cus_tokenizer;&lt;/p&gt; &lt;p&gt;typedef struct cus_tokenizer_cursor {&lt;br&gt; sqlite3_tokenizer_cursor base;&lt;br&gt; char *pInput;&lt;br&gt; int nBytes;&lt;br&gt; int iToken;&lt;br&gt; char *pToken;&lt;br&gt; rmmseg::Algorithm *pAlgor;&lt;br&gt; } cus_tokenizer_cursor;&lt;/p&gt; &lt;p&gt;void initmmseg(void){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(!loadDic)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  mmseg_load_words(&amp;quot;chars.dic&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  mmseg_load_words(&amp;quot;words.dic&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  loadDic = False;&lt;br&gt; }&lt;/p&gt; &lt;p&gt;static int cusCreate(&lt;br&gt; int argc, const char * const *argv,&lt;br&gt; sqlite3_tokenizer **ppTokenizer&lt;br&gt; ){&lt;br&gt; cus_tokenizer *t;&lt;br&gt; t = (cus_tokenizer *) sqlite3_malloc(sizeof(*t));&lt;br&gt; if( t==NULL ) return SQLITE_NOMEM;&lt;br&gt; memset(t, 0, sizeof(*t));&lt;br&gt; initmmseg();&lt;br&gt; *ppTokenizer = &amp;amp;t-&amp;gt;base;&lt;br&gt; return SQLITE_OK;&lt;br&gt; }&lt;/p&gt; &lt;p&gt;static int cusDestroy(sqlite3_tokenizer *pTokenizer){&lt;br&gt; sqlite3_free(pTokenizer);&lt;br&gt; return SQLITE_OK;&lt;br&gt; }&lt;/p&gt; &lt;p&gt;static int cusOpen(&lt;br&gt; sqlite3_tokenizer *pTokenizer,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* The tokenizer */&lt;br&gt; const char *pInput, int nBytes,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* String to be tokenized */&lt;br&gt; sqlite3_tokenizer_cursor **ppCursor&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: Tokenization cursor */&lt;br&gt; ){&lt;br&gt; cus_tokenizer_cursor *c;&lt;br&gt; if(pInput == 0){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  nBytes = 0;&lt;br&gt; }else if(nBytes &amp;lt; 0)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  nBytes = (int)strlen(pInput);&lt;/p&gt; &lt;p&gt;c = (cus_tokenizer_cursor *) sqlite3_malloc(sizeof(*c));&lt;br&gt; if(c == NULL)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return SQLITE_NOMEM;&lt;/p&gt; &lt;p&gt;c-&amp;gt;iToken = c-&amp;gt;nBytes = 0;&lt;br&gt; c-&amp;gt;pInput = c-&amp;gt;pToken = NULL;&lt;br&gt; c-&amp;gt;pAlgor = mmseg_algor_create(pInput, nBytes);&lt;br&gt; c-&amp;gt;nBytes = nBytes;&lt;br&gt; *ppCursor = &amp;amp;c-&amp;gt;base;&lt;br&gt; return SQLITE_OK;&lt;br&gt; }&lt;/p&gt; &lt;p&gt;static int cusClose(sqlite3_tokenizer_cursor *pCursor){&lt;br&gt; cus_tokenizer_cursor *c = (cus_tokenizer_cursor *) pCursor;&lt;br&gt; if(c-&amp;gt;pInput != NULL){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_free(c-&amp;gt;pInput);&lt;br&gt; }&lt;br&gt; if(c-&amp;gt;pToken != NULL){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_free(c-&amp;gt;pToken);&lt;br&gt; }&lt;br&gt; if(c-&amp;gt;pAlgor != NULL){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  mmseg_algor_destroy(c-&amp;gt;pAlgor);&lt;br&gt; }&lt;br&gt; c-&amp;gt;pInput = c-&amp;gt;pToken = NULL;&lt;br&gt; c-&amp;gt;pAlgor = NULL;&lt;br&gt; sqlite3_free(c);&lt;br&gt; return SQLITE_OK;&lt;br&gt; }&lt;/p&gt; &lt;p&gt;/*&lt;br&gt; 1 sqlite只有在插入数据的时候才使用cursor遍历&lt;br&gt; 2 在进行数据查询时，只会进入一次，然后使用piStartOffset与piEndOffset根据原始串重新生成查询串&lt;br&gt; */&lt;br&gt; static int cusNext(&lt;br&gt; sqlite3_tokenizer_cursor *pCursor, /* Cursor returned by cusOpen */&lt;br&gt; const char **ppToken,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: *ppToken is the token text */&lt;br&gt; int *pnBytes,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: Number of bytes in token */&lt;br&gt; int *piStartOffset,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: Starting offset of token */&lt;br&gt; int *piEndOffset,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: Ending offset of token */&lt;br&gt; int *piPosition&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* OUT: Position integer of token */&lt;br&gt; ){&lt;br&gt; cus_tokenizer_cursor *c = (cus_tokenizer_cursor *) pCursor;&lt;br&gt; cus_tokenizer *t = (cus_tokenizer *) pCursor-&amp;gt;pTokenizer;&lt;br&gt; if(c-&amp;gt;pToken != NULL){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_free(c-&amp;gt;pToken);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  c-&amp;gt;pToken = NULL;&lt;br&gt; }&lt;br&gt; struct Token token = mmseg_next_token(c-&amp;gt;pAlgor);&lt;br&gt; if(token.length != 0 ){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int l = token.length;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  c-&amp;gt;pToken = (char *)sqlite3_malloc(l+1);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(c-&amp;gt;pToken == NULL)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return SQLITE_NOMEM;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  c-&amp;gt;pToken[l] = 0;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  memcpy(c-&amp;gt;pToken, token.text, l);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  *ppToken = c-&amp;gt;pToken;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  *pnBytes = l;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  *piStartOffset = token.offset;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  *piEndOffset = token.offset + token.length;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  *piPosition = c-&amp;gt;iToken++;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  return SQLITE_OK;&lt;br&gt; }&lt;br&gt; //一般来说只有插入数据时才会进入到这里&lt;br&gt; return SQLITE_DONE;&lt;br&gt; }&lt;br&gt; static const sqlite3_tokenizer_module cusTokenizerModule = {&lt;br&gt; 0,&lt;br&gt; cusCreate,&lt;br&gt; cusDestroy,&lt;br&gt; cusOpen,&lt;br&gt; cusClose,&lt;br&gt; cusNext,&lt;br&gt; };&lt;/p&gt; &lt;p&gt;int registerTokenizer(&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3 *db,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  char *zName,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  const sqlite3_tokenizer_module *p&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_stmt *pStmt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char *zSql = &amp;quot;SELECT fts3_tokenizer(?, ?)&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  rc = sqlite3_prepare_v2(db, zSql, -1, &amp;amp;pStmt, 0);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if( rc!=SQLITE_OK ){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_bind_blob(pStmt, 2, &amp;amp;p, sizeof(p), SQLITE_STATIC);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_step(pStmt);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  return sqlite3_finalize(pStmt);&lt;br&gt; }&lt;/p&gt; &lt;p&gt;int main(){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const sqlite3_tokenizer_module *ptr = &amp;amp;cusTokenizerModule;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3 *pDB;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_stmt * stmt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  char * errMsg = NULL;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  const char *zTail;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  int rc = sqlite3_open(&amp;quot;test.sqlite3&amp;quot;, &amp;amp;pDB);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(rc){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  printf(&amp;quot;create error. %s\n&amp;quot;,sqlite3_errmsg(pDB));&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  char token_name[] = &amp;quot;custoken&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  registerTokenizer(pDB, token_name, ptr);&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  rc = sqlite3_exec(pDB, &amp;quot;CREATE VIRTUAL TABLE foo USING fts3(tokenize=custoken)&amp;quot;, 0, 0, &amp;amp;errMsg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(rc != SQLITE_OK){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  printf(&amp;quot;create virtual error, %s\n&amp;quot;, errMsg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(rc != SQLITE_OK){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  printf(&amp;quot;create virtual error, %s\n&amp;quot;, errMsg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  rc = sqlite3_exec(pDB, &amp;quot;INSERT INTO foo VALUES(&amp;#39;\xe5\x8c\x97\xe4\xba\xac\xe5\xb8\x82&amp;#39;)&amp;quot;, 0, 0, &amp;amp;errMsg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  if(rc != SQLITE_OK){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  printf(&amp;quot;insert value error, %s\n&amp;quot;, errMsg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return rc;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int nrow = 0, ncolumn = 0;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  char **azResult; //二维数组存放结果&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_get_table(pDB , &amp;quot;SELECT * FROM foo WHERE content MATCH  &amp;#39;\xe5\x8c\x97\xe4\xba\xac\xe5\xb8\x82&amp;#39;&amp;quot; , &amp;amp;azResult , &amp;amp;nrow ,  &amp;amp;ncolumn , &amp;amp;errMsg );&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  int i = 0 ;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  printf( &amp;quot;row:%d column=%d \n&amp;quot; , nrow , ncolumn );&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  printf( &amp;quot;\nThe result of querying is : \n&amp;quot; );&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  for( i=0 ; i&amp;lt;( nrow + 1 ) * ncolumn ; i++ )&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  printf( &amp;quot;azResult[%d] = %s\n&amp;quot;, i , azResult[i] );&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_free_table( azResult );&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  sqlite3_close(pDB);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  return 0;&lt;br&gt; }&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://hi.baidu.com/xjtukanif/blog/item/8e7a4ea5362abf99d14358e2.html"&gt;http://hi.baidu.com/xjtukanif/blog/item/8e7a4ea5362abf99d14358e2.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-2270986656576204196?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/2270986656576204196/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=2270986656576204196' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/2270986656576204196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/2270986656576204196'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2012/01/sqlite-fts3.html' title='【转】sqlite fts3自定义分词器'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1446822303561963992</id><published>2012-01-12T15:28:00.001+08:00</published><updated>2012-01-12T15:28:18.777+08:00</updated><title type='text'>[转载]delphi中register, pascal, cdecl, stdcall, safecall</title><content type='html'>&lt;div class="blogzz_ainfo" style="margin-bottom:12px"&gt;&lt;span style="margin-right:25px"&gt;&lt;strong&gt;原文地址：&lt;/strong&gt;&lt;a target="_blank" href="http://blog.sina.com.cn/s/blog_552c78120100hsr9.html" title="delphi中register,&amp;nbsp;&amp;lt;wbr&amp;gt;pascal,&amp;nbsp;&amp;lt;wbr&amp;gt;cdecl,&amp;nbsp;&amp;lt;wbr&amp;gt;stdcall,&amp;nbsp;&amp;lt;wbr&amp;gt;safecall"&gt;delphi中register,&amp;nbsp;pascal,&amp;nbsp;cdecl,&amp;nbsp;stdcall,&amp;nbsp;safecall&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;作者：&lt;/strong&gt;&lt;a href="http://blog.sina.com.cn/u/1428977682" title="坚如磐石" target="_blank"&gt;坚如磐石&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;注： 使用错误，或者在该加的地方没有加，可能会出现&amp;quot;privileged instruction&amp;quot;错误，或者地址访问错误。&lt;/font&gt;&lt;/p&gt; &lt;p&gt; 常见的调用惯例有register,&amp;nbsp;pascal,&amp;nbsp;cdecl,&amp;nbsp;stdcall,&amp;nbsp;safecall。函数的调用管理决定了参数如何传递给子过程，并从堆栈中退出，以及寄存器在参数传递中的使用，错误和异常的处理。Delphi中默认的调用惯例是register。&lt;br&gt;  1) register和pascal：参数从左向右传递，也就是说最左边的参数最先求值并传入，最右边的参数最后求值和传入。cdecl，stdcall和safecall则按从右向左方向。&lt;br&gt;  2) 对于除cdecl之外的所有调用惯例，函数/过程在返回的时候要把堆栈中的参数退栈。对cdecl惯例，调用者在被调用的过程返回后执行参数退栈操作&lt;br&gt;  3) register调用惯例最多能用3个CPU寄存器来传递参数，而其它调用惯例只能通过堆栈来传递参数&lt;br&gt; 4) safecall调用惯例实现了异常的防火墙。在Windows上实现了跨进程的COM错误通知机制。&lt;br&gt; 5) register调用效率最高，因为它避免了堆栈的创建。Delphi中published属性必须是register。&lt;br&gt; 6) cdecl常用于调用C/C++编写的共享库中的函数；但是，如果要调用外部代码，那么一般要用stdcall和safecall&lt;br&gt; 7) &lt;font color="#ed1c24"&gt;在Windows上，系统的API都是stdcall和safecall&lt;/font&gt;；在其它操作系统上通常用cdecl（注意：stdcall比cdecl效率要高）&lt;br&gt;  8) 在dual-interface（双接口）方法中必须用safecall惯例。&lt;br&gt; 9) pascal惯例是为了向后兼容；near/far/export用于16位Window编程中的函数调用，在32位的应用程序中不发挥作用，仅仅是为了向后兼容。&lt;br&gt;  下表进行了总结：&lt;br&gt; &lt;br&gt; Calling&amp;nbsp;conventions Parameter&amp;nbsp;order Clean-up Passes&amp;nbsp;parameters&amp;nbsp;in&amp;nbsp;registers？&lt;br&gt;  register Left-to-right Routine Yes&lt;br&gt; pascal Left-to-right Routine No&lt;br&gt; cdecl Right-to-left Caller No&lt;br&gt; stdcall Right-to-left Routine No&lt;br&gt; safecall Right-to-left Routine No&lt;br&gt; &lt;br&gt; 参考资料：Delphi帮助文档 &lt;br&gt;&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://blog.sina.com.cn/s/blog_9048a0c40100uin9.html"&gt;http://blog.sina.com.cn/s/blog_9048a0c40100uin9.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1446822303561963992?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1446822303561963992/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1446822303561963992' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1446822303561963992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1446822303561963992'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2012/01/delphiregister-pascal-cdecl-stdcall.html' title='[转载]delphi中register, pascal, cdecl, stdcall, safecall'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-3237126637661084954</id><published>2011-12-16T21:40:00.001+08:00</published><updated>2011-12-16T21:40:47.437+08:00</updated><title type='text'>【转】jquery的checked以及disabled</title><content type='html'> 		 		 			&lt;p&gt;&lt;span style="background-color:rgb(255,255,0)"&gt;下面只提到checked,其实disabled在jquery里的用法和checked是一模一样的&lt;/span&gt;&lt;/p&gt; &lt;p&gt;下边两种写法没有任何区别 只是少了些代码而已...&lt;/p&gt; &lt;p&gt;-----------------------------------------------------------&lt;br&gt;&amp;lt;input id=&amp;quot;cb1&amp;quot; type=&amp;quot;checkbox&amp;quot; checked /&amp;gt;&lt;br&gt;&amp;lt;input id=&amp;quot;cb2&amp;quot; type=&amp;quot;checkbox&amp;quot; checked=&amp;quot;checked&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;--------------------------------------------------------------&lt;/p&gt; &lt;p&gt;jquery判断checked的三种方法:&lt;/p&gt; &lt;p&gt;.attr(&amp;#39;checked&amp;#39;): &amp;nbsp; //看版本&lt;span style="background-color:rgb(255,255,0)"&gt;1.6+返回:&amp;quot;checked&amp;quot;或&amp;quot;undefined&amp;quot;&lt;/span&gt; ;&lt;span style="background-color:rgb(153,204,0)"&gt;1.5-返回:true或false&lt;/span&gt;&lt;br&gt;.prop(&amp;#39;checked&amp;#39;): //16+:true/false&lt;br&gt; .is(&amp;#39;:checked&amp;#39;): &amp;nbsp; &amp;nbsp;//所有版本:true/false//别忘记冒号哦&lt;/p&gt; &lt;p&gt;jquery赋值checked的几种写法:&lt;/p&gt; &lt;p&gt;&lt;span style="background-color:rgb(255,255,0)"&gt;所有的jquery版本&lt;/span&gt;都可以这样赋值:&lt;/p&gt; &lt;p&gt;// $(&amp;quot;#cb1&amp;quot;).attr(&amp;quot;checked&amp;quot;,&amp;quot;checked&amp;quot;);&lt;br&gt;// $(&amp;quot;#cb1&amp;quot;).attr(&amp;quot;checked&amp;quot;,true);&lt;/p&gt; &lt;p&gt;&lt;span style="background-color:rgb(255,255,0)"&gt;jquery1.6+&lt;/span&gt;:prop的4种赋值:&lt;/p&gt; &lt;p&gt;// $(&amp;quot;#cb1&amp;quot;).prop(&lt;span style="color:rgb(255,0,0)"&gt;&amp;quot;checked&amp;quot;,true&lt;/span&gt;);//很简单就不说了哦&lt;br&gt;// $(&amp;quot;#cb1&amp;quot;).prop(&lt;span style="color:rgb(255,0,0)"&gt;{checked:true}&lt;/span&gt;); //map键值对&lt;br&gt;// $(&amp;quot;#cb1&amp;quot;).prop(&lt;span style="color:rgb(255,0,0)"&gt;&amp;quot;checked&amp;quot;,function(){&lt;/span&gt;&lt;br&gt; &lt;span style="color:rgb(255,0,0)"&gt;return true;&lt;span style="color:rgb(0,0,0)"&gt;//函数返回true或false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:rgb(255,0,0)"&gt;}&lt;/span&gt;);&lt;/p&gt; &lt;p&gt;//记得还有这种哦:$(&amp;quot;#cb1&amp;quot;).prop(&lt;span style="color:rgb(255,0,0)"&gt;&amp;quot;checked&amp;quot;,&amp;quot;checked&amp;quot;&lt;/span&gt;);&lt;/p&gt; &lt;p&gt;更多参考:&lt;a href="http://api.jquery.com/prop/"&gt;http://api.jquery.com/prop/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;上代码 大家可以随便测试:(你是懒人么-_-)&lt;/p&gt; &lt;p&gt;&lt;span style="background-color:rgb(255,255,0)"&gt;jquery1.6以后才支持prop的哦&lt;/span&gt;&lt;/p&gt; &lt;p&gt;新建一个text复制内容进去 &amp;nbsp;后缀名改成html&lt;/p&gt;  &lt;pre&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;html&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;head&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;title&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;测试&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;title&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;style &lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(128,0,0)"&gt;&lt;br&gt; &lt;br&gt;        &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;style&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;        &lt;span style="color:rgb(0,128,0)"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt;1.62可以修改1.42  1.52  1.7来测试&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt;--&amp;gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;script &lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; src&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;script&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;script &lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;&lt;br&gt;         $(&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,255)"&gt;function&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;(){&lt;br&gt;            &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;判断checked&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    var a=$(&amp;quot;#cb1&amp;quot;).attr(&amp;#39;checked&amp;#39;); //看版本1.6+返回:&amp;quot;checked&amp;quot;或&amp;quot;undefined&amp;quot; ;1.5-返回:true或false&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    var b=$(&amp;quot;#cb1&amp;quot;).prop(&amp;#39;checked&amp;#39;); //1.6+:true/false&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,255)"&gt;　　　　　　 var&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt; c&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;$(&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;#cb1&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;).is(&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;&amp;#39;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;:checked&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;&amp;#39;&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;);  &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;所有版本:true/false&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    alert(a);        &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　 　//&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    alert(b);&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;            alert(c);&lt;br&gt;&lt;br&gt;            &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;赋值   前两个所有的jquery版本都支持 prop只有jquery1.6+支持&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    $(&amp;quot;#cb1&amp;quot;).attr(&amp;quot;checked&amp;quot;,&amp;quot;checked&amp;quot;);//1.5-&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    $(&amp;quot;#cb1&amp;quot;).attr(&amp;quot;checked&amp;quot;,true);//1.5-&lt;/span&gt;&lt;/pre&gt;  &lt;pre&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　　//　　　$(&amp;quot;#cb1&amp;quot;).prop(&lt;span&gt;&amp;quot;checked&amp;quot;,&amp;quot;checked&amp;quot;&lt;/span&gt;);//1.6+(整理的时候把这个忘记啦)&lt;/span&gt;&lt;/pre&gt; &lt;pre&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    $(&amp;quot;#cb1&amp;quot;).prop(&amp;quot;checked&amp;quot;,true);//1.6+&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    $(&amp;quot;#cb1&amp;quot;).prop({checked:true});//1.6+&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt; 　　　　　　//&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    $(&amp;quot;#cb1&amp;quot;).prop(&amp;quot;checked&amp;quot;,function(){&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;        return  true;//1.6+&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;　　　　　　 //&lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;    });                &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,128,0)"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="background-color:rgb(245,245,245);color:rgb(0,0,0)"&gt;        })();&lt;br&gt;    &lt;br&gt;        &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;script&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;head&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="color:rgb(0,128,0)"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt;赋值的时候记得去掉checked&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt;--&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;input &lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;cb1&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; type&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;checkbox&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; checked &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;input &lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;cb2&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; type&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;checkbox&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; checked&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;checked&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(128,0,0)"&gt;html&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt; &lt;br&gt;摘自：&lt;a href="http://www.cnblogs.com/0banana0/archive/2011/11/16/2251855.html"&gt;http://www.cnblogs.com/0banana0/archive/2011/11/16/2251855.html&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-3237126637661084954?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/3237126637661084954/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=3237126637661084954' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3237126637661084954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3237126637661084954'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/12/jquerycheckeddisabled.html' title='【转】jquery的checked以及disabled'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1558993051975537709</id><published>2011-12-15T14:30:00.001+08:00</published><updated>2011-12-15T14:30:39.390+08:00</updated><title type='text'>【转】PHP导入导出Excel方法</title><content type='html'>&lt;div class="multicntwrap"&gt; 	      &lt;div class="multicnt"&gt; 	      	&lt;div&gt; 		      &lt;h3 class="title pre fs1"&gt;&lt;span class="tcnt"&gt;PHP导入导出Excel方法&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="bgc0 fc07 fw0 fs0"&gt;&lt;/span&gt;&lt;/h3&gt; 		       		    &lt;/div&gt; 	      &lt;/div&gt;         &lt;/div&gt;                  &lt;div&gt;                  &lt;/div&gt;                           &lt;div class="bct fc05 fc11 nbw-blog ztag js-fs2"&gt;&lt;span&gt;&lt;span&gt;&lt;p&gt;原作者：冰山上的播客&lt;br&gt;看 到这篇文章的时候，很是惊讶原作者  的耐心，虽然我们在平时用的也有一些，但没有作者列出来的全，写excel的时候，我用过pear的库，也用过pack压包的头，同样那些利用  smarty等作的简单替换xml的也用过，csv的就更不用谈了。呵呵。（COM方式不讲了，这种可读的太多了，我也写过利用wps等进行word等的  生成之类的文章 ）&lt;br&gt;但是在读的时候，只用过一种，具体是什么忘了，要回去翻代码了。因为采用的是拿来主义，记不住。&lt;br&gt;原文地址：&lt;a rel="nofollow" href="http://xinsync.xju.edu.cn/index.php/archives/3858"&gt;http://xinsync.xju.edu.cn/index.php/archives/3858&lt;/a&gt;&lt;br&gt;原文内容：&lt;/p&gt; &lt;p&gt;最近因项目需要，需要开发一个模块，把系统中的一些数据导出成Excel，修改后再导回系统。就趁机对这个研究了一番，下面进行一些总结。&lt;br&gt; 基本上导出的文件分为两种：&lt;br&gt;1：类Excel格式，这个其实不是传统意义上的Excel文件，只是因为Excel的兼容能力强，能够正确打开而已。修改这种文件后再保存，通常会提示你是否要转换成Excel文件。&lt;br&gt;优点：简单。&lt;br&gt;缺点：难以生成格式，如果用来导入需要自己分别编写相应的程序。&lt;br&gt;2：Excel格式，与类Excel相对应，这种方法生成的文件更接近于真正的Excel格式。&lt;/p&gt; &lt;p&gt;如果导出中文时出现乱码，可以尝试将字符串转换成gb2312，例如下面就把$yourStr从utf-8转换成了gb2312:&lt;br&gt; $yourStr = mb_convert_encoding(&amp;rdquo;gb2312″, &amp;ldquo;UTF-8″, $yourStr);&lt;/p&gt; &lt;p&gt;下面详细列举几种方法。&lt;br&gt;一、PHP导出Excel&lt;/p&gt; &lt;p&gt;1：第一推荐无比风骚的PHPExcel，官方网站： &lt;a rel="nofollow" href="http://www.codeplex.com/PHPExcel"&gt;http://www.codeplex.com/PHPExcel&lt;/a&gt;&lt;br&gt; 导入导出都成，可以导出office2007格式，同时兼容2003。&lt;br&gt;下载下来的包中有文档和例子，大家可以自行研究。&lt;br&gt;抄段例子出来：&lt;/p&gt; &lt;p&gt;&lt;br&gt;PHP代码&lt;br&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp; &lt;br&gt;/**&amp;nbsp; &lt;br&gt;* PHPExcel&amp;nbsp; &lt;br&gt;*&amp;nbsp; &lt;br&gt;* Copyright (C) 2006 - 2007 PHPExcel&amp;nbsp; &lt;br&gt;*&amp;nbsp; &lt;br&gt;* This library is free software; you can redistribute it and/or&amp;nbsp; &lt;br&gt; * modify it under the terms of the GNU Lesser General Public&amp;nbsp; &lt;br&gt;* License as published by the Free Software Foundation; either&amp;nbsp; &lt;br&gt;* version 2.1 of the License, or (at your option) any later version.&amp;nbsp; &lt;br&gt;*&amp;nbsp; &lt;br&gt;* This library is distributed in the hope that it will be useful,&amp;nbsp; &lt;br&gt; * but WITHOUT ANY WARRANTY; without even the implied warranty of&amp;nbsp; &lt;br&gt;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the GNU&amp;nbsp; &lt;br&gt;* Lesser General Public License for more details.&amp;nbsp; &lt;br&gt;*&amp;nbsp; &lt;br&gt;* You should have received a copy of the GNU Lesser General Public&amp;nbsp; &lt;br&gt; * License along with this library; if not, write to the Free Software&amp;nbsp; &lt;br&gt;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&amp;nbsp; &lt;br&gt;*&amp;nbsp; &lt;br&gt;* @category&amp;nbsp;&amp;nbsp; PHPExcel&amp;nbsp; &lt;br&gt;* @package&amp;nbsp;&amp;nbsp;&amp;nbsp; PHPExcel&amp;nbsp; &lt;br&gt; * @copyright&amp;nbsp; Copyright (c) 2006 - 2007 PHPExcel ( &lt;a rel="nofollow" href="http://www.codeplex.com/PHPExcel"&gt;http://www.codeplex.com/PHPExcel&lt;/a&gt;)&amp;nbsp; &lt;br&gt;* @license&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a rel="nofollow" href="http://www.gnu.org/licenses/lgpl.txt"&gt;http://www.gnu.org/licenses/lgpl.txt&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LGPL&amp;nbsp; &lt;br&gt; * @version&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5.0, 2007-10-23&amp;nbsp; &lt;br&gt;*/&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;/** Error reporting */&amp;nbsp;&amp;nbsp; &lt;br&gt;error_reporting(E_ALL);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;/** Include path **/&amp;nbsp;&amp;nbsp; &lt;br&gt;set_include_path(get_include_path() . PATH_SEPARATOR . &amp;lsquo;../Classes/&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;/** PHPExcel */&amp;nbsp;&amp;nbsp; &lt;br&gt;include &amp;lsquo;PHPExcel.php&amp;rsquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;/** PHPExcel_Writer_Excel2007 */&amp;nbsp;&amp;nbsp; &lt;br&gt;include &amp;lsquo;PHPExcel/Writer/Excel2007.php&amp;rsquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Create new PHPExcel object&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Create new PHPExcel object\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel = new PHPExcel();&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Set properties&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Set properties\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getProperties()-&amp;gt;setCreator(&amp;rdquo;Maarten Balliauw&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getProperties()-&amp;gt;setLastModifiedBy(&amp;rdquo;Maarten Balliauw&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel-&amp;gt;getProperties()-&amp;gt;setTitle(&amp;rdquo;Office 2007 XLSX Test Document&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getProperties()-&amp;gt;setSubject(&amp;rdquo;Office 2007 XLSX Test Document&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getProperties()-&amp;gt;setDescrīption(&amp;rdquo;Test document for Office 2007 XLSX, generated using PHP classes.&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel-&amp;gt;getProperties()-&amp;gt;setKeywords(&amp;rdquo;office 2007 openxml php&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getProperties()-&amp;gt;setCategory(&amp;rdquo;Test result file&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Add some data&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Add some data\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel-&amp;gt;setActiveSheetIndex(0);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getActiveSheet()-&amp;gt;setCellValue(&amp;rsquo;A1′, &amp;lsquo;Hello&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getActiveSheet()-&amp;gt;setCellValue(&amp;rsquo;B2′, &amp;lsquo;world!&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getActiveSheet()-&amp;gt;setCellValue(&amp;rsquo;C1′, &amp;lsquo;Hello&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel-&amp;gt;getActiveSheet()-&amp;gt;setCellValue(&amp;rsquo;D2′, &amp;lsquo;world!&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Rename sheet&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Rename sheet\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;$objPHPExcel-&amp;gt;getActiveSheet()-&amp;gt;setTitle(&amp;rsquo;Simple&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Set active sheet index to the first sheet, so Excel opens this as the first sheet&amp;nbsp;&amp;nbsp; &lt;br&gt; $objPHPExcel-&amp;gt;setActiveSheetIndex(0);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Save Excel 2007 file&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Write to Excel2007 format\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);&amp;nbsp;&amp;nbsp; &lt;br&gt;$objWriter-&amp;gt;save(str_replace(&amp;rsquo;.php&amp;rsquo;, &amp;lsquo;.xlsx&amp;rsquo;, __FILE__));&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;// Echo done&amp;nbsp;&amp;nbsp; &lt;br&gt;echo date(&amp;rsquo;H:i:s&amp;rsquo;) . &amp;rdquo; Done writing file.\r\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;2、使用pear的Spreadsheet_Excel_Writer类&lt;br&gt;下载地址： &lt;a rel="nofollow" href="http://pear.php.net/package/Spreadsheet_Excel_Writer"&gt;http://pear.php.net/package/Spreadsheet_Excel_Writer&lt;/a&gt;&lt;br&gt; 此类依赖于OLE,下载地址：&lt;a rel="nofollow" href="http://pear.php.net/package/OLE"&gt;http://pear.php.net/package/OLE&lt;/a&gt;&lt;br&gt;需要注意的是导出的Excel文件格式比较老，修改后保存会提示是否转换成更新的格式。&lt;br&gt;不过可以设定格式，很强大。&lt;/p&gt; &lt;p&gt;&lt;br&gt;PHP代码&lt;br&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp; &lt;br&gt;require_once &amp;lsquo;Spreadsheet/Excel/Writer.php&amp;rsquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;// Creating a workbook&amp;nbsp;&amp;nbsp; &lt;br&gt;$workbook = new Spreadsheet_Excel_Writer();&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// sending HTTP headers&amp;nbsp;&amp;nbsp; &lt;br&gt;$workbook-&amp;gt;send(&amp;rsquo;test.xls&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Creating a worksheet&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet =&amp;amp; $workbook-&amp;gt;addWorksheet(&amp;rsquo;My first worksheet&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;// The actual data&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(0, 0, &amp;lsquo;Name&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(0, 1, &amp;lsquo;Age&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(1, 0, &amp;lsquo;John Smith&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(1, 1, 30);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(2, 0, &amp;lsquo;Johann Schmidt&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; $worksheet-&amp;gt;write(2, 1, 31);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(3, 0, &amp;lsquo;Juan Herrera&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;$worksheet-&amp;gt;write(3, 1, 32);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Let&amp;rsquo;s send the file&amp;nbsp;&amp;nbsp; &lt;br&gt;$workbook-&amp;gt;close();&amp;nbsp;&amp;nbsp; &lt;br&gt;?&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;br&gt;3:利用smarty，生成符合Excel规范的XML或HTML文件&lt;br&gt; 支持格式，非常完美的导出方案。不过导出来的的本质上还是XML文件，如果用来导入就需要另外处理了。&lt;br&gt;详细内容请见rardge大侠的帖子：&lt;a rel="nofollow" href="http://bbs.chinaunix.net/viewthread.php?tid=745757"&gt;http://bbs.chinaunix.net/viewthread.php?tid=745757&lt;/a&gt;&lt;/p&gt; &lt;p&gt;需要注意的是如果导出的表格行数不确定时，最好在模板中把&amp;rdquo;ss:ExpandedColumnCount=&amp;rdquo;5″ ss:ExpandedRowCount=&amp;rdquo;21″&amp;rdquo;之类的东西删掉。&lt;/p&gt;  &lt;p&gt;4、利用pack函数打印出模拟Excel格式的断句符号，这种更接近于Excel标准格式，用office2003修改后保存，还不会弹出提示，推荐用这种方法。&lt;br&gt;缺点是无格式。&lt;/p&gt; &lt;p&gt;&lt;br&gt;PHP代码&lt;br&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp; &lt;br&gt;// Send Header&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Pragma: public&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Expires: 0″);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Cache-Control: must-revalidate, post-check=0, pre-check=0″);&amp;nbsp;&amp;nbsp; &lt;br&gt; header(&amp;rdquo;Content-Type: application/force-download&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Content-Type: application/octet-stream&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Content-Type: application/download&amp;rdquo;);;&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Content-Disposition: attachment;filename=test.xls &amp;ldquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; header(&amp;rdquo;Content-Transfer-Encoding: binary &amp;ldquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;// XLS Data Cell&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;xlsBOF();&amp;nbsp;&amp;nbsp; &lt;br&gt;xlsWriteLabel(1,0,&amp;rdquo;My excel line one&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;xlsWriteLabel(2,0,&amp;rdquo;My excel line two : &amp;ldquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;xlsWriteLabel(2,1,&amp;rdquo;Hello everybody&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;xlsEOF();&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;function xlsBOF() {&amp;nbsp;&amp;nbsp; &lt;br&gt;echo pack(&amp;rdquo;ssssss&amp;rdquo;, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);&amp;nbsp;&amp;nbsp; &lt;br&gt;return;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt;function xlsEOF() {&amp;nbsp;&amp;nbsp; &lt;br&gt;echo pack(&amp;rdquo;ss&amp;rdquo;, 0×0A, 0×00);&amp;nbsp;&amp;nbsp; &lt;br&gt;return;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt; function xlsWriteNumber($Row, $Col, $Value) {&amp;nbsp;&amp;nbsp; &lt;br&gt;echo pack(&amp;rdquo;sssss&amp;rdquo;, 0×203, 14, $Row, $Col, 0×0);&amp;nbsp;&amp;nbsp; &lt;br&gt;echo pack(&amp;rdquo;d&amp;rdquo;, $Value);&amp;nbsp;&amp;nbsp; &lt;br&gt;return;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt;function xlsWriteLabel($Row, $Col, $Value ) {&amp;nbsp;&amp;nbsp; &lt;br&gt;$L = strlen($Value);&amp;nbsp;&amp;nbsp; &lt;br&gt; echo pack(&amp;rdquo;ssssss&amp;rdquo;, 0×204, 8 + $L, $Row, $Col, 0×0, $L);&amp;nbsp;&amp;nbsp; &lt;br&gt;echo $Value;&amp;nbsp;&amp;nbsp; &lt;br&gt;return;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt;?&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;不过笔者在64位linux系统中使用时失败了，断句符号全部变成了乱码。&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;5、使用制表符、换行符的方法&amp;nbsp;&amp;nbsp; &lt;br&gt;制表符&amp;rdquo;\t&amp;rdquo;用户分割同一行中的列，换行符&amp;rdquo;\t\n&amp;rdquo;可以开启下一行。&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;lt;?php&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Content-Type: application/vnd.ms-execl&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Content-Disposition: attachment; filename=myExcel.xls&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Pragma: no-cache&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt;header(&amp;rdquo;Expires: 0″);&amp;nbsp;&amp;nbsp; &lt;br&gt;/*first line*/&amp;nbsp;&amp;nbsp; &lt;br&gt; echo &amp;ldquo;hello&amp;rdquo;.&amp;rdquo;\t&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;world&amp;rdquo;.&amp;rdquo;\t&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;\t\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;/*start of second line*/&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;this is second line&amp;rdquo;.&amp;rdquo;\t&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;Hi,pretty girl&amp;rdquo;.&amp;rdquo;\t&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;\t\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;?&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;br&gt;6、使用com&lt;br&gt; 如果你的PHP可以开启com模块，就可以用它来导出Excel文件&lt;/p&gt; &lt;p&gt;&lt;br&gt;PHP代码&lt;br&gt;&amp;lt;?PHP&amp;nbsp;&amp;nbsp; &lt;br&gt;$filename = &amp;ldquo;c:/spreadhseet/test.xls&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;$sheet1 = 1;&amp;nbsp;&amp;nbsp; &lt;br&gt;$sheet2 = &amp;ldquo;sheet2″;&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_app = new COM(&amp;rdquo;Excel.application&amp;rdquo;) or Die (&amp;rdquo;Did not connect&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; print &amp;ldquo;Application name: {$excel_app-&amp;gt;Application-&amp;gt;value}\n&amp;rdquo; ;&amp;nbsp;&amp;nbsp; &lt;br&gt;print &amp;ldquo;Loaded version: {$excel_app-&amp;gt;Application-&amp;gt;version}\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;$Workbook = $excel_app-&amp;gt;Workbooks-&amp;gt;Open(&amp;rdquo;$filename&amp;rdquo;) or Die(&amp;rdquo;Did not open $filename $Workbook&amp;rdquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; $Worksheet = $Workbook-&amp;gt;Worksheets($sheet1);&amp;nbsp;&amp;nbsp; &lt;br&gt;$Worksheet-&amp;gt;activate;&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_cell = $Worksheet-&amp;gt;Range(&amp;rdquo;C4″);&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_cell-&amp;gt;activate;&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_result = $excel_cell-&amp;gt;value;&amp;nbsp;&amp;nbsp; &lt;br&gt;print &amp;ldquo;$excel_result\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; $Worksheet = $Workbook-&amp;gt;Worksheets($sheet2);&amp;nbsp;&amp;nbsp; &lt;br&gt;$Worksheet-&amp;gt;activate;&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_cell = $Worksheet-&amp;gt;Range(&amp;rdquo;C4″);&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_cell-&amp;gt;activate;&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_result = $excel_cell-&amp;gt;value;&amp;nbsp;&amp;nbsp; &lt;br&gt;print &amp;ldquo;$excel_result\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; #To close all instances of excel:&amp;nbsp;&amp;nbsp; &lt;br&gt;$Workbook-&amp;gt;Close;&amp;nbsp;&amp;nbsp; &lt;br&gt;unset($Worksheet);&amp;nbsp;&amp;nbsp; &lt;br&gt;unset($Workbook);&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_app-&amp;gt;Workbooks-&amp;gt;Close();&amp;nbsp;&amp;nbsp; &lt;br&gt;$excel_app-&amp;gt;Quit();&amp;nbsp;&amp;nbsp; &lt;br&gt;unset($excel_app);&amp;nbsp;&amp;nbsp; &lt;br&gt;?&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;  &lt;p&gt;一个更好的例子： &lt;a rel="nofollow" href="http://blog.chinaunix.net/u/16928/showart_387171.html"&gt;http://blog.chinaunix.net/u/16928/showart_387171.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;一、PHP导入Excel&lt;/p&gt; &lt;p&gt;1：还是用PHPExcel，官方网站： &lt;a rel="nofollow" href="http://www.codeplex.com/PHPExcel"&gt;http://www.codeplex.com/PHPExcel&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;2：使用PHP-ExcelReader,下载地址: &lt;a rel="nofollow" href="http://sourceforge.net/projects/phpexcelreader"&gt;http://sourceforge.net/projects/phpexcelreader&lt;/a&gt;&lt;br&gt;举例：&lt;/p&gt; &lt;p&gt;&lt;br&gt;PHP代码&lt;br&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp; &lt;br&gt;require_once &amp;lsquo;Excel/reader.php&amp;rsquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;// ExcelFile($filename, $encoding);&amp;nbsp;&amp;nbsp; &lt;br&gt;$data = new Spreadsheet_Excel_Reader();&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;// Set output Encoding.&amp;nbsp;&amp;nbsp; &lt;br&gt;$data-&amp;gt;setOutputEncoding(&amp;rsquo;utf8′);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;$data-&amp;gt;read(&amp;rsquo; jxlrwtest.xls&amp;rsquo;);&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp; &lt;br&gt;error_reporting(E_ALL ^ E_NOTICE);&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;for ($i = 1; $i &amp;lt;= $data-&amp;gt;sheets[0][&amp;#39;numRows&amp;#39;]; $i++) {&amp;nbsp;&amp;nbsp; &lt;br&gt;for ($j = 1; $j &amp;lt;= $data-&amp;gt;sheets[0][&amp;#39;numCols&amp;#39;]; $j++) {&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;\&amp;rdquo;&amp;quot;.$data-&amp;gt;sheets[0][&amp;#39;cells&amp;#39;][$i][$j].&amp;rdquo;\&amp;rdquo;,&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt; }&amp;nbsp;&amp;nbsp; &lt;br&gt;echo &amp;ldquo;\n&amp;rdquo;;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;?&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://pcwanli.blog.163.com/blog/static/45315611201011894811404/"&gt;http://pcwanli.blog.163.com/blog/static/45315611201011894811404/&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1558993051975537709?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1558993051975537709/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1558993051975537709' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1558993051975537709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1558993051975537709'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/12/phpexcel.html' title='【转】PHP导入导出Excel方法'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6986568462638565840</id><published>2011-12-15T14:26:00.001+08:00</published><updated>2011-12-15T14:26:09.169+08:00</updated><title type='text'>【转】php导出导入execl（使用PHPExcel类）</title><content type='html'>php导出导入execl（使用PHPExcel类）&lt;br&gt;&lt;br&gt;  &lt;p style="text-indent:2em"&gt;php导入execl&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;下载phpexcelreader类&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;&lt;a target="_blank" rel="nofollow" href="http://sourceforge.net/projects/phpexcelreader/"&gt;http://sourceforge.net/projects/phpexcelreader/&amp;nbsp;&lt;/a&gt;&lt;/p&gt;   &lt;p style="text-indent:2em"&gt;demo 的execl有问题，自己创建一个。&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;下载下来以后按照readme上面的说法，访问example.php后缺发现如下错误：&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;Fatal error: require_once()  [function.require]: Failed opening required  &amp;#39;Spreadsheet/Excel/Reader/OLERead.php&amp;#39;  (include_path=&amp;#39;.;\xampp\php\PEAR&amp;#39;) in XXXX&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;意 思是缺少Spreadsheet/Excel/Reader/OLERead.php这个文件。但是确实是没有这个文件呀！找了找，在excel目录下发 现了oleread.inc文件，于是将Spreadsheet/Excel/Reader/OLERead.php换成oleread.inc就OK 了！&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;也就是将&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;require_once &amp;#39;Spreadsheet/Excel/Reader/OLERead.php&amp;#39;;&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;修改为&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;require_once &amp;#39;oleread.inc&amp;#39;;&lt;/p&gt;   &lt;p style="text-indent:2em"&gt;即可。&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;另外，在example.php 中，需要修改&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;$data-&amp;gt;setOutputEncoding(&amp;#39;CP1251&amp;#39;);&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;为&lt;/p&gt;  &lt;p style="text-indent:2em"&gt; $data-&amp;gt;setOutputEncoding(&amp;#39;CP936&amp;#39;);&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;不然的话中文将会有问题。&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;如果是使用繁体的话可以修改为CP950、日文是CP932，具体可参考codepage说明。&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;还有，其自带的 jxlrwtest.xls 可能有问题，需要修改example.php中的：&lt;/p&gt;   &lt;p style="text-indent:2em"&gt;$data-&amp;gt;read(&amp;#39;jxlrwtest.xls&amp;#39;);&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;为自己的 excel 文件名，用了一下，感觉还是不错的！&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;如果导入到数据库&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;在使用过程中还出现乱码：&lt;/p&gt;  &lt;p style="text-indent:2em"&gt; 本人页面和数据库都是utf-8,在取出的execl元素中都使用&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;&amp;nbsp; &amp;nbsp;$textip = iconv(&amp;quot;GB2312&amp;quot;,&amp;quot;UTF-8&amp;quot;,$textip);&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;进行编码转换&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;这样才能正确导入mysql&lt;/p&gt;  &lt;p style="text-indent:2em"&gt; php导出execl&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;下载php-excel类，网上一搜&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;里面有dome&lt;/p&gt;  &lt;p style="text-indent:2em"&gt;一看便知，一般没有什么错误。&lt;/p&gt;&lt;p style="text-indent:2em"&gt;摘自：&lt;a href="http://l2007024110.blog.163.com/blog/static/781151422010918111137399/"&gt;http://l2007024110.blog.163.com/blog/static/781151422010918111137399/&lt;/a&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6986568462638565840?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6986568462638565840/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6986568462638565840' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6986568462638565840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6986568462638565840'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/12/phpexeclphpexcel.html' title='【转】php导出导入execl（使用PHPExcel类）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-4709417689292427537</id><published>2011-12-13T18:48:00.001+08:00</published><updated>2011-12-13T18:48:40.737+08:00</updated><title type='text'>PHP去除数组里的空值</title><content type='html'>&lt;p&gt;方法一：&lt;br&gt;&lt;/p&gt;&lt;p&gt;由于没有去空值的数组函数,我们可以利用&lt;/p&gt; &lt;p&gt;&lt;b&gt;array_diff()&lt;/b&gt;函数 &lt;br&gt;&lt;/p&gt; &lt;div&gt; &lt;p&gt;array_diff ― 计算数组的差集&lt;/p&gt;&lt;/div&gt; &lt;h2&gt;说明&lt;/h2&gt; &lt;p&gt;array&lt;/p&gt; &lt;p&gt;&lt;b&gt;array_diff&lt;/b&gt;&lt;/p&gt; &lt;p&gt;( array $array1, array $array2 [, array $ ...] ) &lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;array_diff()&lt;/b&gt; 返回一个数组，该数组包括了所有在 &lt;i&gt;&lt;tt&gt;array1&lt;/tt&gt;&lt;/i&gt; 中但是不在任何其它参数数组中的值。注意键名保留不变。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;去空值的例子:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;$array = array(&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;&amp;quot;,null,&amp;quot;c&amp;quot;);&lt;/p&gt; &lt;p&gt;$array = array_diff($array, array(null));&lt;/p&gt; &lt;p&gt;即可去除.&lt;/p&gt; &lt;p&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;/p&gt; &lt;p&gt;来源：&lt;a href="http://web-studio.blog.sohu.com/142258062.html"&gt;http://web-studio.blog.sohu.com/142258062.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;====================&lt;/p&gt;&lt;p&gt;方法二：&lt;/p&gt;&lt;pre id="question-content"&gt;例 $a =array(&amp;quot;1&amp;quot;,&amp;quot;2&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;4&amp;quot;); 怎么样去除 ""&lt;/pre&gt;&lt;pre id="best-answer-content" class="reply-text mb10"&gt;&amp;lt;?php  function filter($var) {         if($var == &amp;#39;&amp;#39;)         {                 return false;         }          return true; }  $a = array(&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;4&amp;quot;);  print_r(array_filter($a, &amp;quot;filter&amp;quot;));  ?&amp;gt;&lt;/pre&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-4709417689292427537?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/4709417689292427537/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=4709417689292427537' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4709417689292427537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4709417689292427537'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/12/php.html' title='PHP去除数组里的空值'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1248035769215784011</id><published>2011-11-27T17:54:00.001+08:00</published><updated>2011-11-27T17:54:22.246+08:00</updated><title type='text'>【转】 strlen和mb_strlen区别(php获得中英文混合字符长度)</title><content type='html'>&lt;div id="m_blog" class="modbox"&gt;摘自：&lt;a href="http://hi.baidu.com/anylzer/blog/item/f30559388884e8e8b311c75f.html"&gt;http://hi.baidu.com/anylzer/blog/item/f30559388884e8e8b311c75f.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;lt;?php&lt;br&gt;&lt;div id="blog_text" class="cnt"&gt;  //测试时文件的编码方式要是UTF8&lt;br&gt; $str=&amp;#39;中文a字1符&amp;#39;;&lt;br&gt; echo strlen($str).&amp;#39;&amp;lt;br&amp;gt;&amp;#39;;//14&lt;br&gt; echo mb_strlen($str,&amp;#39;utf8&amp;#39;).&amp;#39;&amp;lt;br&amp;gt;&amp;#39;;//6&lt;br&gt; echo mb_strlen($str,&amp;#39;gbk&amp;#39;).&amp;#39;&amp;lt;br&amp;gt;&amp;#39;;//8&lt;br&gt; echo mb_strlen($str,&amp;#39;gb2312&amp;#39;).&amp;#39;&amp;lt;br&amp;gt;&amp;#39;;//10&lt;br&gt; /*&lt;br&gt; 结果分析：在strlen计算时，对待一个UTF8的中文字符是3个长度，所以"中文a字1符"长度是3*4+2=14&lt;br&gt; 在mb_strlen计算时，选定内码为UTF8，则会将一个中文字符当作长度1来计算，所以"中文a字1符"长度是6 &lt;br&gt; */&lt;br&gt; //利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少（一个中文字符的占位是2，英文字符是1）&lt;br&gt; echo (strlen($str) + mb_strlen($str,&amp;#39;UTF8&amp;#39;)) / 2; &lt;br&gt; //例如 "中文a字1符" 的strlen($str)值是14，mb_strlen($str)值是6，则可以计算出"中文a字1符"的占位是10. &lt;br&gt; echo mb_internal_encoding();&lt;br&gt; &lt;p style="text-indent: 2em;"&gt;PHP内置的字符串长度函数&lt;font color="#ff0000"&gt;strlen无法正确处理中文字符串，它得 到的只是字符串所占的字节数&lt;/font&gt;。对于GB2312的中文编码，strlen得到的值是汉字个数的2倍，而对于UTF-8编码的中文，就是3倍的差异了（在 UTF-8编码下，一个汉字占3个字节）。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和  strlen类似，只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度，可以用  mb_strlen($str,&amp;#39;UTF-8&amp;#39;)。如果省略第二个参数，则会使用PHP的内部编码。内部编码可以通过  mb_internal_encoding()函数得到。需要注意的是，mb_strlen并不是PHP核心函数，使用前需要确保在php.ini中加载   了php_mbstring.dll，即确保"extension=php_mbstring.dll"这一行存在并且没有被注释掉，否则会出现未定义函  数的问题。&lt;/p&gt;&lt;/div&gt;					 	&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1248035769215784011?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1248035769215784011/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1248035769215784011' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1248035769215784011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1248035769215784011'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/11/strlenmbstrlenphp.html' title='【转】 strlen和mb_strlen区别(php获得中英文混合字符长度)'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-4589624068965213836</id><published>2011-11-24T23:28:00.001+08:00</published><updated>2011-11-24T23:28:29.501+08:00</updated><title type='text'>【转】MySql中Blob与Text的区别</title><content type='html'>&lt;dl class="box_body" id="fontzoom"&gt;&lt;dd id="Article"&gt; 		&lt;p&gt; 	BLOB是一个二进制大对象，可以容纳可变数量的数据。有4种BLOB类型：TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	有4种TEXT类型：TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型，有相同的最大长度和存储需求。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字符集，并且排序和比较基于列值字节的数值值。TEXT列有一个字符集，并且根据字符集的 校对规则对值进行排序和比较。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	在TEXT或BLOB列的存储或检索过程中，不存在大小写转换。&lt;/p&gt; &lt;p&gt;当未运行在严格模式时，如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值，值被截取以保证适合。如果截掉的字符不是空格，将会产生一条警告。使用严格SQL模式，会产生错误，并且值将被拒绝而不是截取并给出警告。&lt;/p&gt; &lt;p&gt;&amp;nbsp;在大多数方面，可以将BLOB列视为能够足够大的VARBINARY列。同样，可以将TEXT列视为VARCHAR列。BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR： &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	・&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同）。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	请注意比较时将用空格对TEXT进行扩充以适合比较的对象，正如CHAR和VARCHAR。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	・&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于BLOB和TEXT列的索引，必须指定索引前缀的长度。对于CHAR和VARCHAR，前缀长度是可选的。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	・&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BLOB和TEXT列不能有 默认值。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	LONG和LONG VARCHAR对应MEDIUMTEXT数据类型。这是为了保证兼容性。如果TEXT列类型使用BINARY属性，将为列分配列字符集的二元 校对规则。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY，将TEXT值定义为LONGVARCHAR。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	由于BLOB和TEXT值可能会非常长，使用它们时可能遇到一些约束： &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	・&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当排序时只使用该列的前max_sort_length个字节。max_sort_length的 默认值是1024；该值可以在启动&lt;a href="http://www.2cto.com/database/mysql/" target="_blank" class="keylink"&gt;mysql&lt;/a&gt;d服务器时使用--max_sort_length选项进行更改。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	运行时增加max_sort_length的值可以在排序或组合时使更多的字节有意义。任何客户端可以更改其会话max_sort_length变量的值： &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	mysql&amp;gt; SET max_sort_length = 2000;&lt;/p&gt; &lt;p&gt; 	mysql&amp;gt; SELECT id, comment FROM tbl_name&lt;/p&gt; &lt;p&gt; 	&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; ORDER BY comment;&lt;/p&gt; &lt;p&gt; 	当你想要使超过max_sort_length的字节有意义，对含长值的BLOB或TEXT列使用GROUP BY或ORDER  BY的另一种方式是将列值转换为固定长度的对象。标准方法是使用SUBSTRING函数。例如，下面的语句对comment列的2000个字节进行排序： &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	mysql&amp;gt; SELECT id, SUBSTRING(comment,1,2000) FROM tbl_name&lt;/p&gt; &lt;p&gt; 	&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; ORDER BY SUBSTRING(comment,1,2000);&lt;/p&gt; &lt;p&gt; 	・&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  BLOB或TEXT对象的最大大小由其类型确定，但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改 max_allowed_packet变量的值更改消息缓存区的大小，但必须同时修改服务器和客户端程序。例如，可以使用mysql和mysqldump 来更改客户端的max_allowed_packet值。 &lt;br&gt;&lt;/p&gt; &lt;p&gt; 	每个BLOB或TEXT值分别由内部分配的对象表示。这与其它列类型形成对比，后者是当打开表时为每1列分配存储引擎。&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;摘自：&lt;a href="http://www.2cto.com/database/201108/100262.html"&gt;http://www.2cto.com/database/201108/100262.html&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-4589624068965213836?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/4589624068965213836/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=4589624068965213836' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4589624068965213836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4589624068965213836'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/11/mysqlblobtext.html' title='【转】MySql中Blob与Text的区别'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6569617757085865913</id><published>2011-11-23T23:57:00.001+08:00</published><updated>2011-11-23T23:57:26.154+08:00</updated><title type='text'>【转】MySQL：日期函数、时间函数总结（MySQL 5.X）</title><content type='html'>&lt;h2&gt;&lt;font size="2"&gt;&lt;span style="font-weight: normal;"&gt;摘自：&lt;a href="http://hi.baidu.com/zkheartboy/blog/item/59d2a809a2ad30226a60fbc7.html"&gt;http://hi.baidu.com/zkheartboy/blog/item/59d2a809a2ad30226a60fbc7.html&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;br&gt; &lt;/h2&gt;&lt;h2&gt;一、MySQL 获得当前日期时间 函数&lt;/h2&gt; &lt;p class="bluehead"&gt;1.1 获得当前日期+时间（date + time）函数：now()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select now();&lt;br&gt;&lt;br&gt;+---------------------+&lt;br&gt;| now()               |&lt;br&gt;+---------------------+&lt;br&gt;| 2008-08-08 22:20:46 |&lt;br&gt;+---------------------+&lt;/pre&gt; &lt;p&gt;除了 now() 函数能获得当前的日期时间外，MySQL 中还有下面的函数：&lt;/p&gt; &lt;pre class="sqlcode"&gt;current_timestamp()&lt;br&gt;,current_timestamp&lt;br&gt;,localtime()&lt;br&gt;,localtime&lt;br&gt;,localtimestamp    -- (v4.0.6)&lt;br&gt;,localtimestamp()  -- (v4.0.6)&lt;/pre&gt; &lt;p&gt;这些日期时间函数，都等同于 now()。鉴于 now() 函数简短易记，建议总是 使用 now() 来替代上面列出的函数。&lt;/p&gt; &lt;p class="bluehead"&gt;1.2 获得当前日期+时间（date + time）函数：sysdate()&lt;/p&gt; &lt;p&gt;sysdate() 日期时间函数跟 now() 类似，不同之处在于：now() 在执行开始时值就得到了， sysdate() 在函数执行时动态得到值。看下面的例子就明白了：&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select now(), sleep(3), now();&lt;br&gt;&lt;br&gt;+---------------------+----------+---------------------+&lt;br&gt;| now()               | sleep(3) | now()               |&lt;br&gt;+---------------------+----------+---------------------+&lt;br&gt; | 2008-08-08 22:28:21 |        0 | 2008-08-08 22:28:21 |&lt;br&gt;+---------------------+----------+---------------------+&lt;/pre&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select sysdate(), sleep(3), sysdate();&lt;br&gt;&lt;br&gt;+---------------------+----------+---------------------+&lt;br&gt;| sysdate()           | sleep(3) | sysdate()           |&lt;br&gt;+---------------------+----------+---------------------+&lt;br&gt; | 2008-08-08 22:28:41 |        0 | 2008-08-08 22:28:44 |&lt;br&gt;+---------------------+----------+---------------------+&lt;/pre&gt; &lt;p&gt;可以看到，虽然中途 sleep 3 秒，但 now() 函数两次的时间值是相同的； sysdate() 函数两次得到的时间值相差 3  秒。MySQL Manual 中是这样 描述 sysdate() 的：Return the time at which the function  executes。&lt;/p&gt; &lt;p&gt;sysdate() 日期时间函数，一般情况下很少用到。&lt;/p&gt; &lt;p class="bluehead"&gt;2. 获得当前日期（date）函数：curdate()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select curdate();&lt;br&gt;&lt;br&gt;+------------+&lt;br&gt;| curdate()  |&lt;br&gt;+------------+&lt;br&gt;| 2008-08-08 |&lt;br&gt;+------------+&lt;/pre&gt; &lt;p&gt;其中，下面的两个日期函数等同于 curdate()：&lt;/p&gt; &lt;pre class="sqlcode"&gt;current_date()&lt;br&gt;,current_date&lt;/pre&gt; &lt;p class="bluehead"&gt;3. 获得当前时间（time）函数：curtime()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select curtime();&lt;br&gt;&lt;br&gt;+-----------+&lt;br&gt;| curtime() |&lt;br&gt;+-----------+&lt;br&gt;| 22:41:30  |&lt;br&gt;+-----------+&lt;/pre&gt; &lt;p&gt;其中，下面的两个时间函数等同于 curtime()：&lt;/p&gt; &lt;pre class="sqlcode"&gt;current_time()&lt;br&gt;,current_time&lt;/pre&gt; &lt;p class="bluehead"&gt;4. 获得当前 UTC 日期时间函数：utc_date(), utc_time(), utc_timestamp()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select utc_timestamp(), utc_date(), utc_time(), now()&lt;br&gt;&lt;br&gt;+---------------------+------------+------------+---------------------+&lt;br&gt;| utc_timestamp()     | utc_date() | utc_time() | now()               |&lt;br&gt; +---------------------+------------+------------+---------------------+&lt;br&gt;| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11   | 2008-08-08 22:47:11 |&lt;br&gt;+---------------------+------------+------------+---------------------+&lt;/pre&gt;  &lt;p&gt;因为我国位于东八时区，所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及 多个国家和地区的时候，非常有用。&lt;/p&gt; &lt;h2&gt;二、MySQL 日期时间 Extract（选取） 函数。&lt;/h2&gt; &lt;p class="bluehead"&gt;1. 选取日期时间的各个部分：日期、时间、年、季度、月、日、小时、分钟、秒、微秒&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = &amp;#39;2008-09-10 07:15:30.123456&amp;#39;;&lt;br&gt;&lt;br&gt;select date(@dt);        -- 2008-09-10&lt;br&gt;select time(@dt);        -- 07:15:30.123456&lt;br&gt;select year(@dt);        -- 2008&lt;br&gt;select quarter(@dt);     -- 3&lt;br&gt; select month(@dt);       -- 9&lt;br&gt;select week(@dt);        -- 36&lt;br&gt;select day(@dt);         -- 10&lt;br&gt;select hour(@dt);        -- 7&lt;br&gt;select minute(@dt);      -- 15&lt;br&gt;select second(@dt);      -- 30&lt;br&gt;select microsecond(@dt); -- 123456&lt;/pre&gt;  &lt;p class="bluehead"&gt;2. MySQL Extract() 函数，可以上面实现类似的功能：&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = &amp;#39;2008-09-10 07:15:30.123456&amp;#39;;&lt;br&gt;&lt;br&gt;select extract(year                from @dt); -- 2008&lt;br&gt;select extract(quarter             from @dt); -- 3&lt;br&gt;select extract(month               from @dt); -- 9&lt;br&gt; select extract(week                from @dt); -- 36&lt;br&gt;select extract(day                 from @dt); -- 10&lt;br&gt;select extract(hour                from @dt); -- 7&lt;br&gt;select extract(minute              from @dt); -- 15&lt;br&gt;select extract(second              from @dt); -- 30&lt;br&gt; select extract(microsecond         from @dt); -- 123456&lt;/pre&gt; &lt;pre class="sqlcode"&gt;select extract(year_month          from @dt); -- 200809&lt;br&gt;select extract(day_hour            from @dt); -- 1007&lt;br&gt;select extract(day_minute          from @dt); -- 100715&lt;br&gt;select extract(day_second          from @dt); -- 10071530&lt;br&gt; select extract(day_microsecond     from @dt); -- 10071530123456&lt;br&gt;select extract(hour_minute         from @dt); --    715&lt;br&gt;select extract(hour_second         from @dt); --    71530&lt;br&gt;select extract(hour_microsecond    from @dt); --    71530123456&lt;br&gt; select extract(minute_second       from @dt); --      1530&lt;br&gt;select extract(minute_microsecond  from @dt); --      1530123456&lt;br&gt;select extract(second_microsecond  from @dt); --        30123456&lt;/pre&gt; &lt;p&gt;MySQL Extract() 函数除了没有date(),time() 的功能外，其他功能一应具全。  并且还具有选取'day_microsecond' 等功能。注意这里不是只选取 day 和 microsecond， 而是从日期的 day  部分一直选取到 microsecond 部分。够强悍的吧！&lt;/p&gt; &lt;p&gt;MySQL Extract() 函数唯一不好的地方在于：你需要多敲几次键盘。&lt;/p&gt; &lt;p class="bluehead"&gt;3. MySQL dayof... 函数：dayofweek(), dayofmonth(), dayofyear()&lt;/p&gt; &lt;p&gt;分别返回日期参数，在一周、一月、一年中的位置。&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = &amp;#39;2008-08-08&amp;#39;;&lt;br&gt;&lt;br&gt;select dayofweek(@dt);   -- 6&lt;br&gt;select dayofmonth(@dt);  -- 8&lt;br&gt;select dayofyear(@dt);   -- 221&lt;/pre&gt; &lt;p&gt;日期 &amp;#39;2008-08-08&amp;#39; 是一周中的第 6 天（1 = Sunday, 2 = Monday, ..., 7 = Saturday）； 一月中的第 8 天；一年中的第 221 天。&lt;/p&gt; &lt;p class="bluehead"&gt;4. MySQL week... 函数：week(), weekofyear(), dayofweek(), weekday(), yearweek()&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = &amp;#39;2008-08-08&amp;#39;;&lt;br&gt;&lt;br&gt;select week(@dt);        -- 31&lt;br&gt;select week(@dt,3);      -- 32&lt;br&gt;select weekofyear(@dt);  -- 32&lt;br&gt;&lt;br&gt;select dayofweek(@dt);   -- 6&lt;br&gt;select weekday(@dt);     -- 4&lt;br&gt; &lt;br&gt;select yearweek(@dt);    -- 200831&lt;/pre&gt; &lt;p&gt;MySQL week() 函数，可以有两个参数，具体可看手册。 weekofyear() 和 week() 一样，都是计算"某天"是位于一年中的第几周。 weekofyear(@dt) 等价于 week(@dt,3)。&lt;/p&gt; &lt;p&gt;MySQL weekday() 函数和 dayofweek() 类似，都是返回"某天"在一周中的位置。 不同点在于参考的标准，  weekday：(0 = Monday, 1 = Tuesday, ..., 6 = Sunday)； dayofweek：（1 =  Sunday, 2 = Monday, ..., 7 = Saturday）&lt;/p&gt; &lt;p&gt;MySQL yearweek() 函数，返回 year(2008) + week 位置(31)。&lt;/p&gt; &lt;p class="bluehead"&gt;5. MySQL 返回星期和月份名称函数：dayname(), monthname()&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = &amp;#39;2008-08-08&amp;#39;;&lt;br&gt;&lt;br&gt;select dayname(@dt);     -- Friday&lt;br&gt;select monthname(@dt);   -- August&lt;/pre&gt; &lt;p&gt;思考，如何返回中文的名称呢？&lt;/p&gt; &lt;p class="bluehead"&gt;6. MySQL last_day() 函数：返回月份中的最后一天。&lt;/p&gt; &lt;pre class="sqlcode"&gt;select last_day(&amp;#39;2008-02-01&amp;#39;);  -- 2008-02-29&lt;br&gt;select last_day(&amp;#39;2008-08-08&amp;#39;);  -- 2008-08-31&lt;/pre&gt; &lt;p&gt;MySQL last_day() 函数非常有用，比如我想得到当前月份中有多少天， 可以这样来计算：&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select now(), day(last_day(now())) as days;&lt;br&gt;&lt;br&gt;+---------------------+------+&lt;br&gt;| now()               | days |&lt;br&gt;+---------------------+------+&lt;br&gt;| 2008-08-09 11:45:45 |   31 |&lt;br&gt;+---------------------+------+&lt;/pre&gt;  &lt;h2&gt;三、MySQL 日期时间计算函数&lt;/h2&gt; &lt;p class="bluehead"&gt;1. MySQL 为日期增加一个时间间隔：date_add()&lt;/p&gt; &lt;pre class="sqlcode"&gt;set @dt = now();&lt;br&gt;&lt;br&gt;select date_add(@dt, interval 1 day);        -- add 1 day&lt;br&gt;select date_add(@dt, interval 1 hour);       -- add 1 hour&lt;br&gt;select date_add(@dt, interval 1 minute);     -- ...&lt;br&gt; select date_add(@dt, interval 1 second);&lt;br&gt;select date_add(@dt, interval 1 microsecond);&lt;br&gt;select date_add(@dt, interval 1 week);&lt;br&gt;select date_add(@dt, interval 1 month);&lt;br&gt;select date_add(@dt, interval 1 quarter);&lt;br&gt; select date_add(@dt, interval 1 year);&lt;/pre&gt; &lt;pre class="sqlcode"&gt;select date_add(@dt, interval -1 day);       -- sub 1 day&lt;/pre&gt; &lt;p&gt;MySQL adddate(), addtime()函数，可以用 date_add() 来替代。 下面是 date_add() 实现 addtime() 功能示例：&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; set @dt = &amp;#39;2008-08-09 12:12:33&amp;#39;;&lt;br&gt;&lt;br&gt;mysql&amp;gt;&lt;br&gt;mysql&amp;gt; select date_add(@dt, interval &amp;#39;01:15:30&amp;#39; hour_second);&lt;br&gt;&lt;br&gt;+------------------------------------------------+&lt;br&gt; | date_add(@dt, interval &amp;#39;01:15:30&amp;#39; hour_second) |&lt;br&gt;+------------------------------------------------+&lt;br&gt;| 2008-08-09 13:28:03                            |&lt;br&gt;+------------------------------------------------+&lt;/pre&gt;  &lt;pre class="sqlcode"&gt;mysql&amp;gt; select date_add(@dt, interval &amp;#39;1 01:15:30&amp;#39; day_second);&lt;br&gt;&lt;br&gt;+-------------------------------------------------+&lt;br&gt;| date_add(@dt, interval &amp;#39;1 01:15:30&amp;#39; day_second) |&lt;br&gt; +-------------------------------------------------+&lt;br&gt;| 2008-08-10 13:28:03                             |&lt;br&gt;+-------------------------------------------------+&lt;/pre&gt; &lt;p&gt;date_add() 函数，分别为 @dt 增加了"1小时 15分 30秒" 和 "1天 1小时 15分 30秒"。 建议：总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。&lt;/p&gt; &lt;p class="bluehead"&gt;2. MySQL 为日期减去一个时间间隔：date_sub()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select date_sub(&amp;#39;1998-01-01 00:00:00&amp;#39;, interval &amp;#39;1 1:1:1&amp;#39; day_second);&lt;br&gt;&lt;br&gt;+----------------------------------------------------------------+&lt;br&gt;| date_sub(&amp;#39;1998-01-01 00:00:00&amp;#39;, interval &amp;#39;1 1:1:1&amp;#39; day_second) |&lt;br&gt; +----------------------------------------------------------------+&lt;br&gt;| 1997-12-30 22:58:59                                            |&lt;br&gt;+----------------------------------------------------------------+&lt;/pre&gt; &lt;p&gt;MySQL date_sub() 日期时间函数 和 date_add() 用法一致，不再赘述。 另外，MySQL 中还有两个函数 subdate(), subtime()，建议，用 date_sub() 来替代。&lt;/p&gt; &lt;p class="bluehead"&gt;3. MySQL 另类日期函数：period_add(P,N), period_diff(P1,P2)&lt;/p&gt; &lt;p&gt;函数参数"P" 的格式为"YYYYMM" 或者 "YYMM"，第二个参数"N" 表示增加或减去 N month（月）。&lt;/p&gt; &lt;p&gt;MySQL period_add(P,N)：日期加/减去N月。&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select period_add(200808,2), period_add(20080808,-2)&lt;br&gt;&lt;br&gt;+----------------------+-------------------------+&lt;br&gt;| period_add(200808,2) | period_add(20080808,-2) |&lt;br&gt;+----------------------+-------------------------+&lt;br&gt; |               200810 |                20080806 |&lt;br&gt;+----------------------+-------------------------+&lt;/pre&gt; &lt;p&gt;MySQL period_diff(P1,P2)：日期 P1-P2，返回 N 个月。&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select period_diff(200808, 200801);&lt;br&gt;&lt;br&gt;+-----------------------------+&lt;br&gt;| period_diff(200808, 200801) |&lt;br&gt;+-----------------------------+&lt;br&gt;|                           7 |&lt;br&gt;+-----------------------------+&lt;/pre&gt;  &lt;p&gt;在 MySQL 中，这两个日期函数，一般情况下很少用到。&lt;/p&gt; &lt;p class="bluehead"&gt;4. MySQL 日期、时间相减函数：datediff(date1,date2), timediff(time1,time2)&lt;/p&gt; &lt;p&gt;MySQL datediff(date1,date2)：两个日期相减 date1 - date2，返回天数。&lt;/p&gt; &lt;pre class="sqlcode"&gt;select datediff(&amp;#39;2008-08-08&amp;#39;, &amp;#39;2008-08-01&amp;#39;);  -- 7&lt;br&gt;select datediff(&amp;#39;2008-08-01&amp;#39;, &amp;#39;2008-08-08&amp;#39;);  -- -7&lt;/pre&gt; &lt;p&gt;MySQL timediff(time1,time2)：两个日期相减 time1 - time2，返回 time 差值。&lt;/p&gt; &lt;pre class="sqlcode"&gt;select timediff(&amp;#39;2008-08-08 08:08:08&amp;#39;, &amp;#39;2008-08-08 00:00:00&amp;#39;); -- 08:08:08&lt;br&gt;select timediff(&amp;#39;08:08:08&amp;#39;, &amp;#39;00:00:00&amp;#39;);                       -- 08:08:08&lt;/pre&gt; &lt;p&gt;注意：timediff(time1,time2) 函数的两个参数类型必须相同。&lt;/p&gt; &lt;h2&gt;四、MySQL 日期转换函数、时间转换函数&lt;/h2&gt; &lt;p class="bluehead"&gt;1. MySQL （时间、秒）转换函数：time_to_sec(time), sec_to_time(seconds)&lt;/p&gt; &lt;pre class="sqlcode"&gt;select time_to_sec(&amp;#39;01:00:05&amp;#39;);  -- 3605&lt;br&gt;select sec_to_time(3605);        -- &amp;#39;01:00:05&amp;#39;&lt;/pre&gt; &lt;p class="bluehead"&gt;2. MySQL （日期、天数）转换函数：to_days(date), from_days(days)&lt;/p&gt; &lt;pre class="sqlcode"&gt;select to_days(&amp;#39;0000-00-00&amp;#39;);  -- 0&lt;br&gt;select to_days(&amp;#39;2008-08-08&amp;#39;);  -- 733627&lt;/pre&gt; &lt;pre class="sqlcode"&gt;select from_days(0);           -- &amp;#39;0000-00-00&amp;#39;&lt;br&gt;select from_days(733627);      -- &amp;#39;2008-08-08&amp;#39;&lt;/pre&gt; &lt;p class="bluehead"&gt;3. MySQL Str to Date （字符串转换为日期）函数：str_to_date(str, format)&lt;/p&gt; &lt;pre class="sqlcode"&gt;select str_to_date(&amp;#39;08/09/2008&amp;#39;, &amp;#39;%m/%d/%Y&amp;#39;);                   -- 2008-08-09&lt;br&gt;select str_to_date(&amp;#39;08/09/08&amp;#39;  , &amp;#39;%m/%d/%y&amp;#39;);                   -- 2008-08-09&lt;br&gt;select str_to_date(&amp;#39;08.09.2008&amp;#39;, &amp;#39;%m.%d.%Y&amp;#39;);                   -- 2008-08-09&lt;br&gt; select str_to_date(&amp;#39;08:09:30&amp;#39;, &amp;#39;%h:%i:%s&amp;#39;);                     -- 08:09:30&lt;br&gt;select str_to_date(&amp;#39;08.09.2008 08:09:30&amp;#39;, &amp;#39;%m.%d.%Y %h:%i:%s&amp;#39;); -- 2008-08-09 08:09:30&lt;/pre&gt; &lt;p&gt;可以看到，str_to_date(str,format) 转换函数，可以把一些杂乱无章的字符串转换为日期格式。 另外，它也可以转换为时间。"format" 可以参看 MySQL 手册。&lt;/p&gt; &lt;p class="bluehead"&gt;4. MySQL Date/Time to Str（日期/时间转换为字符串）函数：date_format(date,format), time_format(time,format)&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select date_format(&amp;#39;2008-08-08 22:23:00&amp;#39;, &amp;#39;%W %M %Y&amp;#39;);&lt;br&gt;&lt;br&gt;+------------------------------------------------+&lt;br&gt;| date_format(&amp;#39;2008-08-08 22:23:00&amp;#39;, &amp;#39;%W %M %Y&amp;#39;) |&lt;br&gt; +------------------------------------------------+&lt;br&gt;| Friday August 2008                             |&lt;br&gt;+------------------------------------------------+&lt;/pre&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select date_format(&amp;#39;2008-08-08 22:23:01&amp;#39;, &amp;#39;%Y%m%d%H%i%s&amp;#39;);&lt;br&gt;&lt;br&gt;+----------------------------------------------------+&lt;br&gt;| date_format(&amp;#39;2008-08-08 22:23:01&amp;#39;, &amp;#39;%Y%m%d%H%i%s&amp;#39;) |&lt;br&gt; +----------------------------------------------------+&lt;br&gt;| 20080808222301                                     |&lt;br&gt;+----------------------------------------------------+&lt;/pre&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select time_format(&amp;#39;22:23:01&amp;#39;, &amp;#39;%H.%i.%s&amp;#39;);&lt;br&gt;&lt;br&gt;+-------------------------------------+&lt;br&gt;| time_format(&amp;#39;22:23:01&amp;#39;, &amp;#39;%H.%i.%s&amp;#39;) |&lt;br&gt;+-------------------------------------+&lt;br&gt; | 22.23.01                            |&lt;br&gt;+-------------------------------------+&lt;/pre&gt; &lt;p&gt;MySQL 日期、时间转换函数：date_format(date,format), time_format(time,format)   能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的  一个逆转换。&lt;/p&gt; &lt;p class="bluehead"&gt;5. MySQL 获得国家地区时间格式函数：get_format()&lt;/p&gt; &lt;p&gt;MySQL get_format() 语法：&lt;/p&gt; &lt;pre class="sqlcode"&gt;get_format(date|time|datetime, &amp;#39;eur&amp;#39;|&amp;#39;usa&amp;#39;|&amp;#39;jis&amp;#39;|&amp;#39;iso&amp;#39;|&amp;#39;internal&amp;#39;&lt;/pre&gt; &lt;p&gt;MySQL get_format() 用法的全部示例：&lt;/p&gt; &lt;pre class="sqlcode"&gt;select get_format(date,&amp;#39;usa&amp;#39;)          ;   -- &amp;#39;%m.%d.%Y&amp;#39;&lt;br&gt;select get_format(date,&amp;#39;jis&amp;#39;)          ;   -- &amp;#39;%Y-%m-%d&amp;#39;&lt;br&gt;select get_format(date,&amp;#39;iso&amp;#39;)          ;   -- &amp;#39;%Y-%m-%d&amp;#39;&lt;br&gt; select get_format(date,&amp;#39;eur&amp;#39;)          ;   -- &amp;#39;%d.%m.%Y&amp;#39;&lt;br&gt;select get_format(date,&amp;#39;internal&amp;#39;)     ;   -- &amp;#39;%Y%m%d&amp;#39;&lt;br&gt;select get_format(datetime,&amp;#39;usa&amp;#39;)      ;   -- &amp;#39;%Y-%m-%d %H.%i.%s&amp;#39;&lt;br&gt; select get_format(datetime,&amp;#39;jis&amp;#39;)      ;   -- &amp;#39;%Y-%m-%d %H:%i:%s&amp;#39;&lt;br&gt;select get_format(datetime,&amp;#39;iso&amp;#39;)      ;   -- &amp;#39;%Y-%m-%d %H:%i:%s&amp;#39;&lt;br&gt;select get_format(datetime,&amp;#39;eur&amp;#39;)      ;   -- &amp;#39;%Y-%m-%d %H.%i.%s&amp;#39;&lt;br&gt; select get_format(datetime,&amp;#39;internal&amp;#39;) ;   -- &amp;#39;%Y%m%d%H%i%s&amp;#39;&lt;br&gt;select get_format(time,&amp;#39;usa&amp;#39;)          ;   -- &amp;#39;%h:%i:%s %p&amp;#39;&lt;br&gt;select get_format(time,&amp;#39;jis&amp;#39;)          ;   -- &amp;#39;%H:%i:%s&amp;#39;&lt;br&gt; select get_format(time,&amp;#39;iso&amp;#39;)          ;   -- &amp;#39;%H:%i:%s&amp;#39;&lt;br&gt;select get_format(time,&amp;#39;eur&amp;#39;)          ;   -- &amp;#39;%H.%i.%s&amp;#39;&lt;br&gt;select get_format(time,&amp;#39;internal&amp;#39;)     ;   -- &amp;#39;%H%i%s&amp;#39;&lt;/pre&gt;  &lt;p&gt;MySQL get_format() 函数在实际中用到机会的比较少。&lt;/p&gt; &lt;p class="bluehead"&gt;6. MySQL 拼凑日期、时间函数：makdedate(year,dayofyear), maketime(hour,minute,second)&lt;/p&gt; &lt;pre class="sqlcode"&gt;select makedate(2001,31);   -- &amp;#39;2001-01-31&amp;#39;&lt;br&gt;select makedate(2001,32);   -- &amp;#39;2001-02-01&amp;#39;&lt;/pre&gt; &lt;pre class="sqlcode"&gt;select maketime(12,15,30);  -- &amp;#39;12:15:30&amp;#39;&lt;/pre&gt; &lt;h2&gt;五、MySQL 时间戳（Timestamp）函数&lt;/h2&gt; &lt;p class="bluehead"&gt;1. MySQL 获得当前时间戳函数：current_timestamp, current_timestamp()&lt;/p&gt; &lt;pre class="sqlcode"&gt;mysql&amp;gt; select current_timestamp, current_timestamp();&lt;br&gt;&lt;br&gt;+---------------------+---------------------+&lt;br&gt;| current_timestamp   | current_timestamp() |&lt;br&gt;+---------------------+---------------------+&lt;br&gt; | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |&lt;br&gt;+---------------------+---------------------+&lt;/pre&gt; &lt;p class="bluehead"&gt;2. MySQL （Unix 时间戳、日期）转换函数：&lt;/p&gt; &lt;pre class="sqlcode"&gt;unix_timestamp(),&lt;br&gt;unix_timestamp(date),&lt;br&gt;from_unixtime(unix_timestamp),&lt;br&gt;from_unixtime(unix_timestamp,format)&lt;/pre&gt; &lt;p&gt;下面是示例：&lt;/p&gt; &lt;pre class="sqlcode"&gt;select unix_timestamp();                       -- 1218290027&lt;br&gt;select unix_timestamp(&amp;#39;2008-08-08&amp;#39;);           -- 1218124800&lt;br&gt;select unix_timestamp(&amp;#39;2008-08-08 12:30:00&amp;#39;);  -- 1218169800&lt;/pre&gt;  &lt;pre class="sqlcode"&gt;select from_unixtime(1218290027);              -- &amp;#39;2008-08-09 21:53:47&amp;#39;&lt;br&gt;select from_unixtime(1218124800);              -- &amp;#39;2008-08-08 00:00:00&amp;#39;&lt;br&gt;select from_unixtime(1218169800);              -- &amp;#39;2008-08-08 12:30:00&amp;#39;&lt;/pre&gt;  &lt;pre class="sqlcode"&gt;select from_unixtime(1218169800, &amp;#39;%Y %D %M %h:%i:%s %x&amp;#39;); -- &amp;#39;2008 8th August 12:30:00 2008&amp;#39;&lt;/pre&gt; &lt;p class="bluehead"&gt;3. MySQL 时间戳（timestamp）转换、增、减函数：&lt;/p&gt; &lt;pre class="sqlcode"&gt;timestamp(date)                                     -- date to timestamp&lt;br&gt;timestamp(dt,time)                                  -- dt + time&lt;br&gt;timestampadd(unit,interval,datetime_expr)           --&lt;br&gt; timestampdiff(unit,datetime_expr1,datetime_expr2)   --&lt;/pre&gt; &lt;p&gt;请看示例部分：&lt;/p&gt; &lt;pre class="sqlcode"&gt;select timestamp(&amp;#39;2008-08-08&amp;#39;);                         -- 2008-08-08 00:00:00&lt;br&gt;select timestamp(&amp;#39;2008-08-08 08:00:00&amp;#39;, &amp;#39;01:01:01&amp;#39;);    -- 2008-08-08 09:01:01&lt;br&gt;select timestamp(&amp;#39;2008-08-08 08:00:00&amp;#39;, &amp;#39;10 01:01:01&amp;#39;); -- 2008-08-18 09:01:01&lt;/pre&gt;  &lt;pre class="sqlcode"&gt;select timestampadd(day, 1, &amp;#39;2008-08-08 08:00:00&amp;#39;);     -- 2008-08-09 08:00:00&lt;br&gt;select date_add(&amp;#39;2008-08-08 08:00:00&amp;#39;, interval 1 day); -- 2008-08-09 08:00:00&lt;/pre&gt; &lt;p&gt;MySQL timestampadd() 函数类似于 date_add()。&lt;/p&gt; &lt;pre class="sqlcode"&gt;select timestampdiff(year,&amp;#39;2002-05-01&amp;#39;,&amp;#39;2001-01-01&amp;#39;);                    -- -1&lt;br&gt;select timestampdiff(day ,&amp;#39;2002-05-01&amp;#39;,&amp;#39;2001-01-01&amp;#39;);                    -- -485&lt;br&gt;select timestampdiff(hour,&amp;#39;2008-08-08 12:00:00&amp;#39;,&amp;#39;2008-08-08 00:00:00&amp;#39;);  -- -12&lt;br&gt; &lt;br&gt;select datediff(&amp;#39;2008-08-08 12:00:00&amp;#39;, &amp;#39;2008-08-01 00:00:00&amp;#39;);           -- 7&lt;/pre&gt; &lt;p&gt;MySQL timestampdiff() 函数就比 datediff() 功能强多了，datediff() 只能计算两个 日期（date）之间相差的天数。&lt;/p&gt; &lt;h2&gt;六、MySQL 时区（timezone）转换函数&lt;/h2&gt; &lt;pre class="sqlcode"&gt;convert_tz(dt,from_tz,to_tz)&lt;/pre&gt; &lt;pre class="sqlcode"&gt;select convert_tz(&amp;#39;2008-08-08 12:00:00&amp;#39;, &amp;#39;+08:00&amp;#39;, &amp;#39;+00:00&amp;#39;); -- 2008-08-08 04:00:00&lt;/pre&gt; &lt;p&gt;时区转换也可以通过 date_add, date_sub, timestampadd 来实现。&lt;/p&gt; &lt;pre class="sqlcode"&gt;select date_add(&amp;#39;2008-08-08 12:00:00&amp;#39;, interval -8 hour);  -- 2008-08-08 04:00:00&lt;br&gt;select date_sub(&amp;#39;2008-08-08 12:00:00&amp;#39;, interval  8 hour);  -- 2008-08-08 04:00:00&lt;br&gt;select timestampadd(hour, -8, &amp;#39;2008-08-08 12:00:00&amp;#39;);      -- 2008-08-08 04:00:00&lt;/pre&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6569617757085865913?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6569617757085865913/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6569617757085865913' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6569617757085865913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6569617757085865913'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/11/mysqlmysql-5x.html' title='【转】MySQL：日期函数、时间函数总结（MySQL 5.X）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-642308511138274726</id><published>2011-05-31T15:00:00.001+08:00</published><updated>2011-05-31T15:00:52.842+08:00</updated><title type='text'>为什么我.htacess和apache都设置了 可结果还是不能重写url呢</title><content type='html'>&lt;div class="content mt10"&gt;                 &lt;pre id="question-content"&gt;RT，我apache都已经设置了 AllowOverride All和LoadModule rewrite_module modules/mod_rewrite.so的#号都去掉了 为什么还是不能重写url？&lt;/pre&gt;            &lt;/div&gt;                                     &lt;div class="question-data"&gt;                                                                    &lt;/div&gt;          &lt;div class="box-pink mb10 best-answer-panel" id="best-answer-panel"&gt;         &lt;div class="header"&gt;                                               &lt;span class="answer-type optimal"&gt;&lt;/span&gt;                                  &lt;span class="best-answer-title ml10 bold"&gt;-------------------------------------------------------------&lt;br&gt;最佳答案&lt;/span&gt;                      &lt;/div&gt;         &lt;div class="body"&gt;             &lt;div class="content"&gt;                 &lt;pre id="best-answer-content" class="reply-text mb10"&gt;第一 AllowOverride All 这个配置和rewrite无关。 第二 你说的另外一个配置修改是加载rewrite module，但不能完全保证加载成功。  建议你按照以下步骤排查： 1、bin/httpd -l 检查一下httpd程序中是否已经默认编译进了rewrite module。如果输出中有mod_rewrite.c，那么注释掉LoadModule rewrite_module modules/mod_rewrite.so这一行，rewrite module已经加载成功。如果没有，进行步骤2. 2、在httpd.conf中增加你的LoadModule行，检查modules/下是否有mod_rewrite.so这个文件（必须是这个文件名），确保文件存在就可以了。 3、上面两步检查之后，就可以确保mod_rewrite真的已经可用了。 4、rewrite生效还需要保证httpd.conf中相关的配置（比如RewriteRule）配置正确。&lt;/pre&gt;                                                                                    &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-642308511138274726?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/642308511138274726/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=642308511138274726' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/642308511138274726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/642308511138274726'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/05/htacessapache-url.html' title='为什么我.htacess和apache都设置了 可结果还是不能重写url呢'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-7366978321577903037</id><published>2011-01-09T18:31:00.001+08:00</published><updated>2011-01-09T18:31:07.126+08:00</updated><title type='text'>SEM如何推动传统产业营销（转）</title><content type='html'>&lt;span href="http://bbs.hqew.com/tag.php?name=%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1" class="t_tag"&gt;电子商务&lt;/span&gt;毫无疑问已成为当前一个新的创业和创造财富的机会。而当我们讨论搜索引擎营销时，这个营销工具和它所创造的影响力是跨越了&lt;span href="http://bbs.hqew.com/tag.php?name=%E7%94%B5%E5%AD%90" class="t_tag"&gt;电子&lt;/span&gt;商务企业和传统企业的。接下来我将探讨的话题就是，跨越到传统行业的搜索引擎营销应该怎么做。&lt;br&gt;  &lt;br&gt; &amp;nbsp; &amp;nbsp;  美国人刘易斯曾在1898年提出营销影响消费者的AIDMA模式：引起注意（Attention）&amp;mdash;感兴趣（Interest）&amp;mdash;产生欲望 （Desire）&amp;mdash;形成记忆（Memory）&amp;mdash;产生行动（Action）。这是营销专业人士长久以来遵循的营销模式。而后日本最大的4A公司电通在 2005年提出了新的模型AISAS：注意（Attention）&amp;mdash;兴趣（Interest）&amp;mdash;搜索（Search）&amp;mdash;行动（Action）&amp;mdash;分享 （Share）。这个改进后的模型反映出今天的消费者在获取信息、消费行为以及购买后的行为的客观现状和变化&amp;mdash;&amp;mdash;特别是消费者&amp;ldquo;主动搜索&amp;rdquo;的环节重要性的 凸显。当人开始对一件事物感兴趣的时候，首先要做的就是搜索相关的信息，而互联网这种手段是百分之九十五的消费者都会使用的，它已经成为受众获取信息的一 个重要渠道。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp; 目前限制中国SEO和SEM&lt;span href="http://bbs.hqew.com/tag.php?name=%E9%A2%86%E5%9F%9F" class="t_tag"&gt;领域&lt;/span&gt;发 展的最大瓶颈，基本还是基于电子商务型企业不够多这个事实。但是很多原本非电子商务型的企业已经开始尝试这个服务，以国航为例，自从携程给机票代理服务商 带来了良好的发展势头，国航便开始感觉到了压力。于是国航网站开始尝试做自己的在线订票业务，并整合到其电子商务网站平台上来。这是传统企业向SEM扩展 的一个非常典型的例子。类似的例子还有国美和海尔，其电子商务网站的扩建和提升速度近期都很快。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp;  通常只有少数的创业者和新兴行业会一开始就建设自己的电子商务网站，而对于传统行业，SEO和SEM服务商的工作就不仅仅是优化了，而是更多的涉及互联网 营销的咨询顾问工作。在我们做过的一个案例中，BMW公司针对其搜索引擎营销做出了一些整改。在2008年7月整改以前，使用百度搜索&amp;ldquo;宝马&amp;rdquo;出来的结果 非常乱，有修车厂，有个人销售，有4S店，也有官方的网站，还有一些路标店。整个页面呈现的效果与一个高端奢侈品品牌应有的形象传播不太契合。而在 adSage北京的一次SEM学院讨论提出这个案例以后，宝马的服务商很快根据我们的建议，开始对投放进行改进。于是在2009年4月，同样百度搜索&amp;ldquo;宝 马&amp;rdquo;，会发现出现的页面已经变得相当有条理，而且有了新的品牌专区，显示性图片等。这个案例充分的利用了搜索引擎进行营销，不仅有文字链接和图片，不仅是 购买品牌关键词，而且有效的利用了百度这个平台和工具，使广告资源得到了优化和整合。我们再来看一下奔驰，发现搜索出来的结果页面跟08年7月的宝马页是 一样的，虽然是很顶尖很高端的品牌，但在利用新的互联网营销工具上，目前还非常稚嫩。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp;  以新东方的为例。虽然新东方的品牌在所有的英语培训机构里面品牌形象最高，但是其关键词购买数量非常少，与竞争对手在搜索引擎营销上形成了很大差异。这是 传统行业里一个常见的现象，即强势品牌效应可以延伸到搜索引擎的领域，但是具体的营销操作和实施方法却相对比较滞后，因为他们没有掌握这个新兴的营销工 具。考虑到网站既有吸引新学员的作用，又可以使无法进入课堂学习的人通过&lt;span href="http://bbs.hqew.com/tag.php?name=%E7%BD%91%E7%BB%9C" class="t_tag"&gt;网络&lt;/span&gt;来接受课程，因此我们建议对其在线网站koolearn的推广进行细分，把适合线上推广的课程单独区分出来，这样便可以增加一部分新的收入，即带来相应的增加值。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp;  具体的执行大体分为四步。第一步是观察研究和区分使用搜索的人，即将进教室的人和在网上接受授课的人进行区分，这是很关键的一步；第二部是根据不同的情况 进行选词、文案的竞价，利用新东方的品牌优势达到最佳效果；第三部是广告的精准引导；第四步是一个完善的跟踪，利用呼叫中心对已经转换的客户进行采样调 查，以验证这些转换是否跟我们网络营销的猜测和假想相似。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp;  在选词时我们也有一些技巧，如用户的购买意愿和关键词数量等。按照相关性、单词量等因素将关键词分为三个层次级别；不是把词混在一起，而是把词按这样的方 式进行分类，充分利用百度这个平台，包括右侧的可利用资源等。因此说SEM并不仅仅是竞价相关、海量词的优化和分析，更多时候你需要深入到客户的业务中。 尤其是对传统行业而言，了解其业务是帮助转向online平台的捷径，包括产品更新、促销信息等。&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp;  在执行的组织上，我们利用专业的adSageforSearch的系统工具，为执行过程中的关键字管理，效果优化提供了有力保障。在过去六个月中，新东方 SEM的投资汇报率增长了1800%，投放金额增长了600%。在后续的计划当中，我们在跟新东方工作当中，也为他制定了进一步的SEM计划，帮助其更好 的利用好搜索引擎这个平台。现在，搜索引擎已经成为新东方在线的重要的营销渠道；这些案例也进一步帮助我们修正对SEM的理解：SEM并不是SEO短暂的 竞价排名，而是一个综合性的营销工具；今天的互联网尤其是搜索引擎营销，已不仅仅是新兴行业和电子商务的一个课题，同时也是很多传统企业需要研究的一个方 向。&lt;br&gt;&lt;br&gt;摘自：&lt;a href="http://bbs.hqew.com/viewthread.php?tid=56491&amp;amp;extra=page%3D1"&gt;http://bbs.hqew.com/viewthread.php?tid=56491&amp;amp;extra=page%3D1&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-7366978321577903037?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/7366978321577903037/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=7366978321577903037' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/7366978321577903037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/7366978321577903037'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/01/sem.html' title='SEM如何推动传统产业营销（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-3597083670223995256</id><published>2011-01-09T18:28:00.001+08:00</published><updated>2011-01-09T18:28:14.010+08:00</updated><title type='text'>教您拜访客户（转）</title><content type='html'>在一些营销理论文章中，我们经常可以读到许多精辟的论点，专家们经常提到就是一位优秀的SALES（销售人员）应该具有学者的头脑、艺术家的心、技术者的 手、劳动者的脚，原本这句话可以给我们带来许多积极意义，但事实上，我发现许多像我一样的营销人员在拜访目标客户时，往往则是另外一种情形。 小周是一家&lt;a href="http://www.mq-led.com/" target="_blank"&gt;LED显示屏&lt;/a&gt;公 司负责开拓集团消费业务的一名业务人员，他就经常跟我说起他拜访客户时的苦恼，他说他最担心拜访新客户，特别是初访，新客户往往就是避而不见或者就是在面 谈二、三分钟后表露出不耐烦的情形，听他说了这些，于是我就向他问下面一问题： 你明确地知道初次拜访客户的主要目的吗？  在见你的客户时你做了哪些细致的准备工作？ 在见你的客户前，你通过别人了解过他的一些情况吗？ 在初次见到你的客户时，你跟他说的前三句话是什么？  在与客户面谈的时间里，你发现是你说的话多，还是客户说的话多？  结果小周告诉我，他说他明确地知道他初次拜访客户的主要目的就是了解客户是不是有购买他们公司产品的需求，当然他也做了一些简单的准备工作，如准备产品资 料、名片等，不过，在见客户时他没有通过别人去了解过客户的情况，见到客户时的前三句话自然就是开门见山，报公司名称和自己的名字、介绍产品、然后问他是 否有购买产品的兴趣；在与客户交谈时，小周说应该是自己说的话多，因为机不可失，时不再来嘛；  当他说完这些，我笑了，因为我突然从小周身上发现了自己以前做业务时的影子，记得那时自己做业务时，也是一样喜欢单刀直入，见到客户时，往往迫不及待地向 客户灌输产品情况，直到后来参加几次销售培训后，才知道像我们这样初次拜访客户无异是撬开客户的大嘴，向他猛灌"信息垃圾"。  我们都知道，其实做销售有五大步骤：事前的准备、接近、需求探寻、产品的介绍与展示、缔结业务关系，而所有这些工作无一不是建立在拜访客户的基础之上。因 此，做为一名职业营销人，如何建立自己职业化的拜访之道，然后再成功地运用它，将成为突破客户关系、提升销售业绩的重要砝码！以小周的情况为例，我们不妨 设陌生拜访和二次拜访两个&lt;span href="http://bbs.hqew.com/tag.php?name=%E6%A8%A1%E5%9D%97" class="t_tag"&gt;模块&lt;/span&gt;， 来探讨一下营销人的客户拜访技巧。 陌生拜访：让客户说说说 营销人自己的角色：只是一名学生和听众； 让客户出任的角色：一名导师和讲演者；  前期的准备工作：有关本公司及业界的知识、本公司及其他公司的产品知识、有关本次客户的相关信息、本公司的销售方针、广泛的知识、丰富的话题、名片、电话 号码簿； &lt;br&gt; 　　拜访流程设计： &lt;br&gt; 　　&lt;br&gt; 　　 一、 打招呼：在客户（他）未开口之前，以亲切的音调向客户（他）打招呼问候，如："王经理，早上好！" &lt;br&gt; 　　&lt;br&gt; 　　 二、 自我介绍：秉明公司名称及自己姓名并将名片双手递上，在与（他）交换名片后，对客户拨空见自己表达谢意；如："这是我的名片，谢谢您能抽出时间让我见到您！" &lt;br&gt; 　　&lt;br&gt; 　　 三、 破冰：营造一个好的气氛，以拉近彼此之间的距离，缓和客户对陌生人来访的紧张情绪；如："王经理，我是您部门的张工介绍来的，听他说，你是一个很随和的领导"。 &lt;br&gt; 　　&lt;br&gt; 　　 四、 开场白的结构： &lt;br&gt; 　　&lt;br&gt; 　　 1、 提出议程；2、陈述议程对客户的价值；3、时间约定；4、询问是否接受； &lt;br&gt; 　　&lt;br&gt; 　　 如："王经理，今天我是专门来向您了解你们公司对＊＊产品的一些需求情况，通过知道你们明确的计划和需求后，我可以为你们提供更方便的服务，我们谈的时间大约只需要五分钟，您看可以吗"？ &lt;br&gt; 　　&lt;br&gt; 　　 五、 巧妙运用询问术，让客户说说说； &lt;br&gt; 　　&lt;br&gt; 　　 1、 设计好问题漏斗； &lt;br&gt; 　　&lt;br&gt; 　　 通过询问客户来达到探寻客户需求的真正目的，这是营销人员最基本的销售技巧，在询问客户时，问题面要采用由宽到窄的方式逐渐进行深度探寻。 &lt;br&gt; 　　&lt;br&gt; 　　 如："王经理，您能不能介绍一下贵公司今年总体的商品销售趋势和情况？"、"贵公司在哪些方面有重点需求？"、"贵公司对＊＊产品的需求情况，您能介绍一下吗？" &lt;br&gt; 　　&lt;br&gt; 　　 2、 结合运用扩大询问法和限定询问法； &lt;br&gt; 　　&lt;br&gt; 　　 采用扩大询问法，可以让客户自由地发挥，让他多说，让我们知道更多的东西，而采用限定询问法，则让客户始终不远离会谈的主题，限定客户回答问题的方向，在询问客户时，营销人员经常会犯的毛病就是"封闭话题"。 &lt;br&gt; 　　&lt;br&gt; 　　  如："王经理，贵公司的产品需求计划是如何报审的呢？"这就是一个扩大式的询问法；如："王经理，像我们提交的一些供货计划，是需要通过您的审批后才能在 下面的部门去落实吗？"这是一个典型的限定询问法；而营销人员千万不要采用封闭话题式的询问法，来代替客户作答，以造成对话的中止，如："王经理，你们每 个月销售＊＊产品大概是六万元，对吧？" &lt;br&gt; 　　&lt;br&gt; 　　 3、 对客户谈到的要点进行总结并确认； &lt;br&gt; 　　&lt;br&gt; 　　 根据会谈过程中，你所记下的重点，对客户所谈到的内容进行简单总结，确保清楚、完整，并得到客户一致同意； &lt;br&gt; 　　&lt;br&gt; 　　 如："王经理，今天我跟你约定的时间已经到了，今天很高兴从您这里听到了这么多宝贵的信息，真的很感谢您！您今天所谈到的内容一是关于……二是关于……三是关于……，是这些，对吗？" &lt;br&gt; 　　&lt;br&gt; 　　 六、 结束拜访时，约定下次拜访内容和时间； &lt;br&gt; 　　&lt;br&gt; 　　 在结束初次拜访时，营销人员应该再次确认一下本次来访的主要目的是否达到，然后向客户叙述下次拜访的目的、约定下次拜访的时间。 &lt;br&gt; 　　&lt;br&gt; 　　 如："王经理，今天很感谢您用这么长的时间给我提供了这么多宝贵的信息，根据你今天所谈到的内容，我将回去好好的做一个供货计划方案，然后再来向您汇报，您看我是下周二上午将方案带过来让您审阅，您看可以吗？"&lt;br&gt; 　　&lt;br&gt;摘自：&lt;a href="http://bbs.hqew.com/viewthread.php?tid=56379&amp;amp;extra=page%3D2"&gt;http://bbs.hqew.com/viewthread.php?tid=56379&amp;amp;extra=page%3D2&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-3597083670223995256?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/3597083670223995256/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=3597083670223995256' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3597083670223995256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3597083670223995256'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/01/blog-post_09.html' title='教您拜访客户（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6768165842695142259</id><published>2011-01-09T18:27:00.001+08:00</published><updated>2011-01-09T18:27:16.715+08:00</updated><title type='text'>让采购远离忙碌（转）</title><content type='html'>1、从整理你的办公桌面开始；&lt;br&gt; &lt;br&gt; 大家都知道采购员的文件资料是很多的，有发票、入库单、传真、技术图纸、需求计划、合同、报价等等。可以这样说，大多采购的桌面是混乱的。而这些混乱是影 响你工作情绪、增加你工作量的一个重要因素。现在开始整理你的桌面，让文档管理更加规范，养成及时处理的习惯，给自己一个整洁、清新的办公环境。&lt;br&gt; &lt;br&gt; 方法有：A、尽量用邮件交流，减少传真，B、公司用电脑传真，C、将重要的书面资料通过扫描的办法存入电脑，D、在电脑中进行分类管理，E、定期对文件进行清理等等。&lt;br&gt; &lt;br&gt; 2、合理&lt;span href="http://bbs.hqew.com/tag.php?name=%E5%BA%94%E7%94%A8" class="t_tag"&gt;应用&lt;/span&gt;邮件、贸易通、QQ（MSN）和电话&lt;br&gt; &lt;br&gt; 电话多是采购部门的特点，但是电话最好用来解决简单的沟通问题，为了不让过多的电话影响你一天的计划，可以要求有关人员将需要沟通解决的问题通过邮件的形 式来沟通。这样，你可以选择合适的时间去处理这些邮件。而需要自己去沟通重要的问题，也可以设置不同的格式模板来处理，可以既规范又节省时间，如：质量反 馈单、工作联系单等。&lt;br&gt; &lt;br&gt; 3、学会处理邮件&lt;br&gt; &lt;br&gt; 现在的采购工作中，邮件的阅读量会越来越大，在邮件上所花费的时间也越来越多。处理邮件要迅速，要能立即判断该邮件处理的先后顺序，将邮件及时分类成紧急 处理、优先处理和待处理几类。要要求发送方在邮件的标题上著名清楚邮件的核心内容和处理的紧急程度。所有邮件的处理尽量当日阅读完毕，对于未能处理的邮件 内容要列入工作日记。及时删除垃圾邮件。&lt;br&gt; &lt;br&gt; 4、学会做工作日记&lt;br&gt; &lt;br&gt; 每天晚上或第二天上班前要提炼当日（或次日）工作计划的要点，检查各项工作完成的情况，事不过夜，日清日毕！在日常工作中，把重点问题记录在工作日记上，防止遗漏！&lt;br&gt; &lt;br&gt; 5、学会思考与总结，不做"井底之蛙"，而要"登高望远"&lt;br&gt; &lt;br&gt; 这是一个优秀采购必须具备的素质，是防止采购问题重复发生的主要解决办法，也是提高自我的手段，是一个业务型采购走向管理型采购的开始。要能够发现问题， 解决问题，总结问题，规避同类问题发生。不能仅仅"做事"，而更多的还是要"管事"！一个不能脱身于采购事务之外来认真思考自己工作的采购，一个不能站在 更高的层次去思考、总结自己工作的采购，其进步的速度是缓慢的，其忙碌的一生也是可以想象的！&lt;br&gt;&lt;br&gt;摘自：&lt;a href="http://bbs.hqew.com/viewthread.php?tid=56750&amp;amp;extra=page%3D1"&gt;http://bbs.hqew.com/viewthread.php?tid=56750&amp;amp;extra=page%3D1&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6768165842695142259?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6768165842695142259/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6768165842695142259' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6768165842695142259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6768165842695142259'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2011/01/blog-post.html' title='让采购远离忙碌（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6982310206870933664</id><published>2010-12-31T11:26:00.001+08:00</published><updated>2010-12-31T11:26:26.763+08:00</updated><title type='text'>专访罗斯柴尔德大中华区总裁俞丽萍:“谁是下一个吉利和沃尔沃？”（转）</title><content type='html'>摘自：&lt;a href="http://www.21cbh.com/HTML/2010-12-31/0MMDAwMDIxMzg0MA.html"&gt;http://www.21cbh.com/HTML/2010-12-31/0MMDAwMDIxMzg0MA.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div class="news_con" id="news_con"&gt;               &lt;p&gt;200多年以来，罗斯柴尔德家族似乎一直有着"和国王一起散步"的神奇权力。&lt;/p&gt;&lt;p&gt;三年前出版的《货币战争》，将200多年前这个创立了现代金融集团雏形的犹太家族，称为"大道无形的世界首富"。罗斯柴尔德上海的办公室里，挂着李鸿章的照片，旁边还有他在1896年给罗斯柴尔德的亲笔信。&lt;/p&gt;&lt;p&gt;2005年，家族奠基人梅耶・罗斯柴尔德（Meyer Amschel Rothschild）名列福布斯杂志"历史上最具有权势的二十位商人"第7位，被称作"国际金融之父"。&lt;/p&gt; &lt;p&gt;随着美国式的投资银行在全球各地急行军式的扩张，曾经引领华尔街辉煌的罗斯柴尔德家族似乎风光不再。&lt;/p&gt;&lt;p&gt;不过，在最近一次的金融危机中，全球投行纷纷陷落甚至破产，而罗斯柴尔德却全身而退，成为爱尔兰、荷兰、英国等十几个国家的财务顾问，并参与了多个国家的汽车行业的重整。&lt;/p&gt;&lt;p&gt;"《货币战争》只是财经小说。罗斯柴尔德家族并非'阴谋家族'，而是一个自律的、明确自己经营和战略方向的财富家族。"&lt;/p&gt;&lt;p&gt;说这话的，是目前唯一进入罗斯柴尔德集团全球执行委员会的女性，该集团大中华区的掌门人俞丽萍。12月29日，她接受了本报记者专访。&lt;/p&gt; &lt;p&gt;"经过金融危机，全球制造业进入了洗牌阶段。可以想见，未来中国企业跨国并购的势头有多大。"俞丽萍说。&lt;/p&gt;&lt;p&gt;低调的"金融专卖店"&lt;/p&gt;&lt;p&gt;约俞丽萍采访是件困难的事。&lt;/p&gt;&lt;p&gt;上网搜索有关罗斯柴尔德在中国的近况，除了吉利收购沃尔沃一事触发了集中关注之外，鲜有笔墨。而最近一次彭博社的采访，也是在罗斯柴尔德总部的要求下完成的。&lt;/p&gt;&lt;p&gt;这些年，俞丽萍很少接受媒体采访，也没有上过电视，更不愿提供自己的照片。她上任后主动提出，大中华区不需要公共关系部门。&lt;/p&gt; &lt;p&gt;"我从事过新闻行业，深知新闻宣传的强大力量。"俞丽萍说，"但对罗斯柴尔德来说，扎实完成知名度高的交易，才是最好的宣传。"&lt;/p&gt;&lt;p&gt;面前这位优雅地喝着咖啡、谈话间还细心地将餐巾折叠整齐的女士，是吉利18亿美元收购沃尔沃的幕后推动者之一。收购沃尔沃这样的"百年老店"，就是她所看重的知名度高的案子。&lt;/p&gt;&lt;p&gt;"我能够在罗斯柴尔德呆上8年，也是因为我的人生和事业追求和公司风格高度吻合。"俞丽萍表示。&lt;/p&gt;&lt;p&gt;她名片上印着"洛希尔（香港）有限公司"，这是罗斯柴尔德的另一个中文译名。很多人因为这个原因，很少将其与"神秘家族"联系起来。&lt;/p&gt; &lt;p&gt;罗斯柴尔德家族在香港及内地开展业务的主要机构，是LCF Rothschild Ltd和洛希尔父子有限公司(N M Rothschild&amp;amp;Sons Limited)。&lt;/p&gt;&lt;p&gt;和金融危机前的投行不同，按照俞丽萍的说法，罗斯柴尔德就是个"金融专卖店"，不创造也不购买金融产品，专心做客户的财务顾问。&lt;/p&gt;&lt;p&gt;1994年1月至2004年12月，罗斯柴尔德为55个项目提供了顾问服务，涉及金额达480亿美元，项目数量超过了其它任何一家投资银行的同类业务。&lt;/p&gt; &lt;p&gt;"其实罗斯柴尔德这么多年一直没有太大的变化，只是因为其他投行业务发展太过迅猛，让我们看起来显得低调。"俞丽萍说。&lt;/p&gt;&lt;p&gt;她表示，作为财务顾问，我们更不能高调――毕竟高度保密信息即便透露出一丁点儿，都会引起上市公司股价的异动，或给项目谈判带来影响。&lt;/p&gt;&lt;p&gt;&lt;b&gt;中国的"不扩张"计划&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1994年，罗斯柴尔德就在上海设立了办事处。&lt;/p&gt;&lt;p&gt;目前，罗斯柴尔德家族投资2450万欧元持有青岛银行4.98%的股份，是中海基金第三大股东，同时与中信华东集团在山东蓬莱合资成立罗斯柴尔德男爵中信酒业公司。&lt;/p&gt; &lt;p&gt;作为财务顾问，罗斯柴尔德曾经参与了中国联通240亿美元收购中国网通的"中国最大并购案"，他们的客户有中石油、上海汽车、小肥羊和阿里巴巴等。&lt;/p&gt;&lt;p&gt;近期，罗斯柴尔德帮助华能支付12亿美元买下印度GMR集团的总部位于美国马萨诸塞州的InterGen公司50%股权；同时，它还帮助中国五矿资源以18.46亿美元收购其母公司名下资产澳大利亚采矿公司MMG，为上市公司注资，这一收购案几周前获得澳大利亚政府批准。&lt;/p&gt;&lt;p&gt;而帮助吉利收购沃尔沃，使得罗斯柴尔德在中国并购顾问排名中，从2009年的第19位，上升到第8位。&lt;/p&gt; &lt;p&gt;俞丽萍表示："罗斯柴尔德在继承家族专一谨慎风格的同时，也不断适应中国市场快速增长的变化。"&lt;/p&gt;&lt;p&gt;不过，迄今为止，罗斯柴尔德在中国并没有庞大的扩张计划。&lt;/p&gt;&lt;p&gt;俞丽萍透露，目前罗斯柴尔德在中国没有计划设立新的办公室，也不会一味扩大业务范围："未来我们在中国仍然以并购和资本市场顾问业务为主线，我非常看好其前景。"&lt;/p&gt;&lt;p&gt;她说："尽管IPO仍是投行的主流业务。但是很多人忽视了一点：企业在资本市场进行积累后，接下来要依靠并购整合来实现进一步增长。"&lt;/p&gt; &lt;div class="news_con" id="news_con"&gt;               &lt;p&gt;她透露，现在罗斯柴尔德正在为国内的一些工业企业物色合适的海外收购对象。&lt;/p&gt;&lt;p&gt;吉利项目之后，她开始考虑，尽管国有企业仍唱主角，但各行各业的民营企业对于技术和品牌的需求逐渐浮现，这是她未来进一步投入精力的领域。&lt;/p&gt;&lt;p&gt;&lt;b&gt;罗斯柴尔德模式&lt;/b&gt;&lt;/p&gt;&lt;p&gt;从历史上看，与政界保持紧密联系，是罗斯柴尔德金融王国的不二法门。&lt;/p&gt;&lt;p&gt;时至今日，罗斯柴尔德家族的收入当中有一大半来自于为世界各地的政府提供顾问和金融投资服务。&lt;/p&gt; &lt;p&gt;在吉利收购沃尔沃之后，俞丽萍也遭遇到了媒体对其和政府高层关系密切的种种猜测。&lt;/p&gt;&lt;p&gt;"这些猜测完全淡化了整个团队在案子中付出的努力。"俞丽萍表示，"我不觉得和政府沟通是投行的主要工作内容。我们的客户自身都有很强的沟通能力，而投行需要做的是，从商业上为公司提出更大的利益。"&lt;/p&gt;&lt;p&gt;不过，从她的经验来看，和一些公司管理层熟悉，对于项目的推动有一定作用，如果在全球范围内获得了第一手信息，那么她就会将目标公司直接拿给客户，这样就会占得先机。&lt;/p&gt; &lt;p&gt;前不久由她推动的光明乳业收购澳洲糖业的案子，就是通过这样的方式而来。&lt;/p&gt;&lt;p&gt;目前，她手上有中信证券和法国里昂证券的合作项目。不过，她对结果态度谨慎："即便有99%的成功概率，我都不敢预测。有时放弃也是一种成功。"她表示。&lt;/p&gt;&lt;p&gt;&lt;b&gt;跨国并购：中资企业路漫漫&lt;/b&gt;&lt;/p&gt;&lt;p&gt;如果说前两年跨国并购都是以吸引海外战略投资为主，如今此轮金融危机后，中国强大的外汇储备和企业自我增长的需求，都为中资企业的海外扩张提供了动力。&lt;/p&gt; &lt;p&gt;汤森路透集团报告称，2010年中国并购市场总体规模较去年上涨18%，涉及金额1643亿美元，发生并购案例3057宗。其中中国涉及对外并购交易321宗，规模545亿美元。&lt;/p&gt;&lt;p&gt;根据俞丽萍观察，中资企业的海外并购，从早期购买矿产等自然资源，到如今开始逐步转向制造业和消费品行业。&lt;/p&gt;&lt;p&gt;"全球的工业制造业进入了一个洗牌阶段，正在实现产业转化。中国在制造业转移中，正好可以有机会重新整顿，以资金换取技术、品牌和国际网络。"&lt;/p&gt; &lt;p&gt;经济复苏期，欧美频频向中国企业伸出橄榄枝，政府间游说也不在少数。俞丽萍认为："老外现在盯着中国企业口袋里的钱。中国企业必须冷静，对自己的战略定位有清晰认识。"&lt;/p&gt;&lt;p&gt;根据多年的从业经验，她认为中资企业海外并购时，冲动型收购是通病。"如果客户对于目标对象是否能成为今后的战略资产并不明确，那么将影响我们对交易的估值，也会影响客户的长远发展"&lt;/p&gt;&lt;p&gt;她透露，经常发生的情况是，客户缺乏对目标资产的战略性考虑，为几百万或几千万美金使一个好的收购项目夭折，这非常可惜。另外，也有一些客户在最后关头因为非商业因素而放弃收购。&lt;/p&gt; &lt;p&gt;在选择具体标的时，中资企业也面临难题：仅收购一部分股份，无法满足企业的战略发展需要，对目标公司的话语权会很小；而全盘吃下，中国企业需要考虑未来的管理如何跟上。&lt;/p&gt;&lt;p&gt;"谁是下一个吉利？这很难说。"她表示，"沃尔沃拥有独立品牌和技术体系，吉利能收购其技术、网络、团队和知识产权――这样理想的标的，又适合中国公司的，为数很少。"&lt;/p&gt;                            &lt;/div&gt;                            &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6982310206870933664?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6982310206870933664/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6982310206870933664' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6982310206870933664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6982310206870933664'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/blog-post_31.html' title='专访罗斯柴尔德大中华区总裁俞丽萍:“谁是下一个吉利和沃尔沃？”（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-2556223528792006993</id><published>2010-12-27T10:08:00.000+08:00</published><updated>2010-12-27T10:09:02.181+08:00</updated><title type='text'>在盛大像游戏一样工作（转）</title><content type='html'>摘自：&lt;a href="http://magazine.caing.com/2010-12-24/100210886.html?utm_source=mail.caing.com&amp;amp;utm_medium=referral&amp;amp;utm_content=caing_news_mail&amp;amp;utm_campaign=caing"&gt;http://magazine.caing.com/2010-12-24/100210886.html?utm_source=mail.caing.com&amp;amp;utm_medium=referral&amp;amp;utm_content=caing_news_mail&amp;amp;utm_campaign=caing&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;div class="subhead"&gt;从游戏式管理到岗位作业平台，盛大网络不断升级的信息化管理系统，令陈天桥成为盛大网络里的&amp;ldquo;老大哥&amp;rdquo;，清楚地看到公司里每个人的工作&lt;/div&gt;                                        &lt;div class="pageTo"&gt;&lt;b&gt;  &lt;a href="http://magazine.caing.com/centuryweeklylist/" target="_blank"&gt;《新世纪》周刊&lt;/a&gt;  记者 王姗姗&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 陈天桥提出游戏式管理的灵感，源自他对网络游戏观察产生的疑问。一款游戏能吸引300万人同时在线，玩家们练级涨级的时候&amp;ldquo;从来不需要谁批准&amp;rdquo;。&lt;/div&gt;     &lt;p&gt;　　&amp;ldquo;这300万人自觉自愿地付出时间、金钱，而游戏仅仅给他们提供虚拟的成就感，他们就很满足。员工从企业拿工资，为什么还老有人闹着要走？&amp;rdquo;他曾经这样向负责人力资源的下属表达自己的困惑。&lt;/p&gt; &lt;p&gt;　　盛大网络创始人、董事长兼CEO陈天桥从2007年就开始琢磨游戏式管理的可行性，并将之作为公司年度十大项目之一。2008年该系统正式上线运营，盛大对外宣布，&amp;ldquo;从此再也没有手动调薪，晋级统统由经验值积分说了算&amp;rdquo;。&lt;/p&gt; &lt;p&gt;　　简而言之，游戏式管理体系核心是经验值管理系统，是一套通过实时记录方式，让所有员工犹如游戏中的&amp;ldquo;打怪&amp;rdquo;&amp;ldquo;做副本&amp;rdquo;一样，完成自己的工作以获 得经验值累积的激励系统。在电子游戏里，你的经验值决定着你的游戏角色能否升级。而对于盛大网络员工来说，自从游戏式管理上线后，经验值就直接关系到他们 能否加薪、升级。&lt;/p&gt; &lt;p&gt;　　两年过去，这套游戏式管理推行情况如何？根据盛大网络12月22日发布的2010年三季度《员工发展报告》，过去三个月内，在纳入游戏式管理体系下的4000名盛大网络员工中，40％的员工自动获得职级晋升和薪资增长，10％的员工获得职级大类晋升。&lt;/p&gt; &lt;p&gt;　　2005年，陈天桥从北大方正挖来米丹宁，出任盛大网络副总裁兼首席信息官（CIO），从此开始了对于盛大IT管理系统的搭建，目标是实现整个 公司的信息化系统管理。而所谓的经验值管理系统，只是这个庞大信息化系统的一小部分。2006年7月上线的工作流平台，就像一个神经网络，让陈天桥通过这 个平台能实现对企业各项工作流程的掌握。而即将上线的岗位作业平台，将进一步发挥精细化管理的能量，实现对各个流程系统的集合，届时员工每时每刻的行动都 会留下痕迹并被记录，转化为经验值，而陈天桥则能凭此实现对每一名员工工作细节的掌握。&lt;/p&gt; &lt;p&gt;　　&amp;ldquo;挣点分呗！&amp;rdquo;现在，这句话已经逐渐成为盛大员工们之间互相打趣的口头禅。在企业工作真的能简单等同于参与一场网游吗？&lt;/p&gt; &lt;p&gt;&lt;strong&gt;员工=玩家&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　并不是所有盛大网络员工都纳入了游戏式管理体系。随着盛大网络近几年陆续展开收购，员工数量膨胀至将近1万人，后期收购公司还有待整合，现在纳入游戏式管理的包括盛大游戏、盛大在线的员工，总数约4000人。&lt;/p&gt; &lt;p&gt;　　在游戏式管理体系中，每个员工面前都摆着一张完全相同的&amp;ldquo;双梯发展模式图&amp;rdquo;，图上分列出专业岗位和管理岗位的晋升阶梯&amp;mdash;&amp;mdash;从初级技术人员到首席专家；从主管到首席执行官。当员工积累的经验值达到晋升和涨薪标准，将自动获得晋升。&lt;/p&gt; &lt;p&gt;　　游戏式管理体系的核心是经验值系统，也是人事激励制度的信息化系统。经验值可以通过两个渠道获得，一类是岗位经验值，另一类是项目经验值。&lt;/p&gt; &lt;p&gt;　　岗位经验值是对员工日常工作完成情况的考核，合格则奖，不合格则扣。不同级别的员工按不同标准积累日常经验值，级别高则经验值的日积累数就会更高，每一个经验值都会换算为具体的钱数，员工只要不出太大差错，每年基本能得到5％的薪水上调。&lt;/p&gt; &lt;p&gt;　　项目经验值则是由员工通过主动申报项目，完成之后而获得。员工提出项目后，盛大网络各子公司的每个业务系统下设的计划与风险控制委员会（为盛大 内部非常重要的部门，简称计委会），会对员工申报的项目进行事前的评估立项，按照项目的重要性分为集团级、公司级和中心级三等，并预设定项目指标。员工按 时保质实现指标，就可以获得额外项目经验值。&lt;/p&gt; &lt;p&gt;　　在陈天桥看来，游戏式管理体系可以让员工非常清晰地知道自己的发展目标，&amp;ldquo;只要通过自身努力去达成目标&amp;rdquo;。按照这一考核体系，要想尽快提薪升职，最好的办法是在干完本职工作的基础上，主动多做额外项目以获取额外经验值。&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;strong&gt;碰撞&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　对于任何一种管理上的改变来说，碰撞似乎都是不可避免的。一些员工在接受采访时，对这套积分式的管理方式并不推崇，认为这种&amp;ldquo;公式化&amp;rdquo;的人事加 薪晋级体系有失必要的灵活性，不具备太强吸引力，而且一些关键的指标仍然需要主观定夺，并没有避免&amp;ldquo;拍脑袋&amp;rdquo;的决策。人力资源部则表示，公司更看重的是这 套系统是否为有进取心的员工提供了空间。理想与现实的矛盾，集中体现在了打分的规则上。&lt;/p&gt; &lt;p&gt;　　在盛大，额外经验值被视为是对那些有进取心的优秀员工的荣誉奖励。为了鼓励员工多做额外项目，盛大人力资源部门甚至希望今后能将季度结算升级为周期更短的结算方式，好让员工的努力可以尽快转换为直接的加薪。&lt;/p&gt; &lt;p&gt;　　根据公司人力资源部门的统计，2009年员工参与立项743个，50％以上的公司员工都有参与。按项目的重要程度，又分为集团级、公司级和中心级，平均每个项目3000点-5000点经验值。&lt;/p&gt; &lt;p&gt;　　可是，不少员工向本刊记者表示，项目经验值的立项往往存在周期长、多人搭伴完成的情况。&amp;ldquo;经验值三个月结算一次，而立项很多都不能在三个月内完 成，最后每个项目摊到每个人头上，就只有几百个经验值。&amp;rdquo;一位盛大员工告诉本刊记者，1万个经验值大约可加薪1500元到2000元，依靠做项目所获的经 验值，对工资和职业晋升几乎杯水车薪。因此，真正有指望的，还是每年依靠岗位经验值所获得的保底5％的加薪。&lt;/p&gt; &lt;p&gt;　　但是，岗位经验值换来的保底加薪是否公允，也遭遇员工质疑。因为低级员工与高级员工的成长速度相同，但低级员工的薪水基础相对较低，同样5％加薪对低级员工和高级员工差异很大。&lt;/p&gt; &lt;p&gt;　　&amp;ldquo;他们辛苦做五年，不过是从一个很低的薪水基础涨25％，而岗位经验值通常要积累四五年才够获得一次职级大类的晋升机会。&amp;rdquo;一位在盛大游戏工作 多年的中层管理人士向本刊记者透露，自己团队中很多年轻员工，面对那张清晰的&amp;ldquo;双梯发展模式图&amp;rdquo;时，几乎可以一眼看尽自己在盛大未来五年甚至十年之内那极 为有限的薪水浮动和升职空间，不免生出前途黯淡之感。&lt;/p&gt; &lt;p&gt;　　也有盛大网络员工表示，额外项目与日常本职工作之间的界线并不明晰。因此，游戏式管理中一味加强额外项目含金量的做法，会导致一些员工疏于对本职工作投入足够多的精力，反而一门心思都放在做额外项目上。&lt;/p&gt; &lt;p&gt;　　计委会对项目进行评估过程中，项目价值与经验值之间如何转换，其主观判断环节始终在员工中引发争议。几年来盛大人力资源部门虽不断优化其操作流程且积累了很多转换经验值的经验，但并未彻底打消这一过程的争议性。&lt;/p&gt; &lt;p&gt;　　对于员工的种种质疑，盛大网络人力资源总监熊力向本刊记者表示，&amp;ldquo;这套系统的主要任务是发现、吸引和留住优秀员工，让他们有机会脱颖而出。任何 一个公司，都不可能所有人都是优秀员工，这个比例在全体员工中通常是20％-25％。如果每个人都感觉升得很快，这其实是不正常的。&amp;rdquo;&lt;/p&gt; &lt;p&gt;　　这种充分透明的晋升机制，让盛大的中层也经受挑战。为了要稳住一些对打分和晋升不满意的下属，避免人员流失，他们要想方设法为下属争取加薪。过 去，他们可以出具更笼统和主观的意见，但现在，则必须研究这套积分体系，挖掘加分空间，或者争取特殊加薪，也常常心有余而力不足，因为每年只有很少的名 额。&lt;/p&gt; &lt;p&gt;　　熊力向本刊记者证实，没有立项的额外加薪申请，通常先经计委会评估，最后由陈天桥本人审核，每年获得特殊加薪的员工在总人数中不超过1％。&lt;/p&gt; &lt;p&gt;　　可是，盛大网络从同行企业中挖来的人，薪水常常要高于处在同等职位的老员工，他们也对这种薪水差异很不满。&amp;ldquo;任何一家企业在其发展扩张的过程中，都会遭遇新人与老人之间的利益冲突。&amp;rdquo;熊力解释说，盛大要发展，这就是不可避免的矛盾。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;老大哥&amp;rdquo;陈天桥&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　引进游戏式管理体系，某种程度上折射出陈天桥管理公司的个人风格。自2004年完成上市融资之后，盛大网络创新乏力，只能通过对外并购扩张来保持业绩。&lt;/p&gt; &lt;p&gt;　　2008年7月，盛大网络集成了多家网络文学站点，成立盛大文学。此后盛大网络进一步向互动娱乐媒体的战略目标转舵，2009年6月收购华友世 纪，9月完成盛大游戏在美国拆分上市，11月与湖南广电投资成立了华影盛世，随后收购线视频网站酷6网。至此，盛大已基本形成了包括游戏、文学、媒体、影 视、旅游等五大业务板块以及盛大在线和盛大无线两大平台在内的综合互动娱乐集团，员工总数接近万人，并且还在以每年大约10％的速度在递增。&lt;/p&gt; &lt;p&gt;　　一位熟悉陈天桥的业内人士向本刊记者分析，陈天桥很勤奋，对公司管控意愿很强，但是仅凭一己之力，再勤奋也会力不能及，所以陈天桥试图利用信息化管理系统来延长自己的管控半径。&lt;/p&gt; &lt;p&gt;　　米丹宁出任盛大网络首席信息官后，2006年向陈天桥献上第一件&amp;ldquo;宝物&amp;rdquo;&amp;mdash;&amp;mdash;工作流系统。这一系统于2006年3月开始规划，7月即正式上线。经过此后多年优化，工作流系统支持的流程从最初的几个，已经丰富到现在的300个。&lt;/p&gt; &lt;p&gt;　　与风风火火、对做事效果又格外挑剔的陈天桥相对比，米丹宁讲话慢条斯理，却也滴水不露。&lt;/p&gt; &lt;p&gt;　　在他看来，串联了各个流程功能组件的工作流系统，已真正变成了盛大的&amp;ldquo;神经网络和高速公路&amp;rdquo;，陈天桥就是大脑，各个子公司和业务系统就是&amp;ldquo;手和脚 &amp;rdquo;。&lt;/p&gt; &lt;p&gt;　　米丹宁也许是全公司最能领会陈天桥管理梦想的人。2009年以后，他率领一个近百人的团队，主要任务转向配合陈天桥的&amp;ldquo;集团化&amp;rdquo;战略，开发相应的信息化系统管理规范。对应盛大网络集团化的要求，信息化管理系统也从支持单一企业，变成了要支持多企业。&lt;/p&gt; &lt;p&gt;　　米丹宁的最终目标是将目前已经投入使用的各个流程应用系统汇集于一个统一的平台之上，他将这一平台取名为&amp;ldquo;岗位作业平台&amp;rdquo;。&lt;/p&gt; &lt;p&gt;　　&amp;ldquo;希望这个统一的平台可以支持更加到位的管理。特别是在打通经验值系统之后，可以实现对于岗位经验值更精细化的管理。&amp;rdquo;米丹宁对本刊记者说。&lt;/p&gt; &lt;p&gt;　　即将上线的横跨整个盛大网络集团的&amp;ldquo;岗位作业平台&amp;rdquo;，可以记录下员工工作的点点滴滴，形成清晰的业绩历史。如果盛大网络是一场游戏，陈天桥则可以说是盛大网络里的&amp;ldquo;老大哥&amp;rdquo;，他能随时随地清楚地看到公司里每个人都正在做什么。&lt;/p&gt; &lt;p&gt;　　在陈天桥的眼里，这可能是一个没有管理死角的理想场景。不过，这是那80％安于现状、只想躺在岗业经验值上轻松拿到每年5％保底加薪的员工们希望的场景吗？&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-2556223528792006993?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/2556223528792006993/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=2556223528792006993' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/2556223528792006993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/2556223528792006993'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/blog-post_27.html' title='在盛大像游戏一样工作（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-3481364383056889424</id><published>2010-12-24T09:46:00.001+08:00</published><updated>2010-12-24T09:46:05.397+08:00</updated><title type='text'>什么是域名解析AAAA记录、TXT记录、NS记录？</title><content type='html'>&lt;p&gt;&lt;strong&gt;AAAA记录和IPv6相关，&lt;/strong&gt;是通过将 IPv4 A记录的简单扩展得到合法的 IPv6 地址，它因此不能完成支持IPv6的层次性等特性。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;什么是域名TXT记录？&lt;/strong&gt;&lt;br&gt; 用户可点击"生成简单的SPF信息"来生成简单的SPF信息&lt;br&gt; TXT 记录，一般指为某个主机名或域名设置的说明，如：&lt;br&gt; admin IN TXT "管理员, 电话： 13901234567″&lt;br&gt; mail IN TXT "邮件主机, 存放在xxx , 管理人：AAA"&lt;br&gt; Jim IN TXT "contact: &lt;a href="mailto:abc@mailserver.com"&gt;abc@mailserver.com&lt;/a&gt;"&lt;br&gt; 也就是说您可以设置 TXT ，以便使别人联系到您&lt;br&gt; 设置TXT的主要目的是，向hotmail这样的邮局开始过滤掉没有做SPF的邮件，用户可以为域名设置含有SPF信息的TXT记录，避免邮件无法正常收发&lt;br&gt; SPF信息：就是Sender Policy  Framework。SPF是跟DNS相关的一项技术，它的内容写在DNS的txt类型的记录里面。mx记录的作用是给寄信者指明某个域名的邮件服务器有 哪些。SPF的作用跟mx相反，它向收信者表明，哪些邮件服务器是经过某个域名认可会发送邮件的。SPF的作用主要是反垃圾邮件，主要针对那些发信人伪造 域名的垃圾邮件。例如：当邮件服务器收到自称发件人是&lt;a href="mailto:spam@gmail.com"&gt;spam@gmail.com&lt;/a&gt;的邮件，那么到底它是不是真的&lt;a href="http://gmail.com"&gt;gmail.com&lt;/a&gt;的邮件服务器发过来的 呢？那么我们可以查询&lt;a href="http://gmail.com"&gt;gmail.com&lt;/a&gt;的SPF记录SPF可以防止别人伪造你来发邮件。&lt;/p&gt;&lt;h2 style="font-weight: normal;" class="single_title"&gt;&lt;font size="2"&gt;&lt;b&gt;NS（Name Server）记录是域名服务器记录&lt;/b&gt;，用来指定该域名由哪个DNS服务器来进行解析。&lt;/font&gt;&lt;/h2&gt;摘自：&lt;a href="http://amangs.com/fav/?p=351"&gt;http://amangs.com/fav/?p=351&lt;/a&gt;&lt;br&gt; &lt;a href="http://baike.baidu.com/view/616263.htm#3"&gt;http://baike.baidu.com/view/616263.htm#3&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-3481364383056889424?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/3481364383056889424/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=3481364383056889424' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3481364383056889424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/3481364383056889424'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/aaaatxtns.html' title='什么是域名解析AAAA记录、TXT记录、NS记录？'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-5737994483422832420</id><published>2010-12-20T18:37:00.001+08:00</published><updated>2010-12-20T18:37:39.802+08:00</updated><title type='text'>windows2003 配置VPN（转）</title><content type='html'>&lt;div class="bct fc05 fc11 nbw-blog ztag js-fs2"&gt;&lt;p&gt;第一步：首先确定禁用了Windows Firewall/Internet Connection Sharing (ICS)服务&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/u5u6w3v0TO9kLrsgsrtTSg==/2590695685646225579.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/u5u6w3v0TO9kLrsgsrtTSg==/2590695685646225579.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;如果开启了，要设为禁用状态！&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/TAJbNiI2XRLKk-N8IkMBoQ==/2590695685646225580.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/TAJbNiI2XRLKk-N8IkMBoQ==/2590695685646225580.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;第二步：开启VPN相关服务：&lt;/p&gt; &lt;p&gt;在&amp;ldquo;管理工具&amp;rdquo;中打开&amp;ldquo;路由和远程访问&amp;rdquo;，开始配置。&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/yba-L2QpAaxUidgySd3UHA==/2590695685646225581.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/yba-L2QpAaxUidgySd3UHA==/2590695685646225581.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;这里选择&amp;ldquo;自定义配置&amp;rdquo;：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/QdzsZBAD44TxvgJWVOheyw==/2590695685646225582.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/QdzsZBAD44TxvgJWVOheyw==/2590695685646225582.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;选择一般要用的VPN和NAT功能：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/eRrK4SWN0tkbXrHpkeHeUQ==/2590695685646225583.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/eRrK4SWN0tkbXrHpkeHeUQ==/2590695685646225583.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;狂点下一步和完成！&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/KitYDQOzVnX7Z9wsh8FItA==/2590695685646225584.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/KitYDQOzVnX7Z9wsh8FItA==/2590695685646225584.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;第三步：配置NAT地址转换！&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/Nmlwjscz2qKoT7FR1Ci00w==/2590695685646225585.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/Nmlwjscz2qKoT7FR1Ci00w==/2590695685646225585.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;选择WAN口，如果不是这样显示就选择服务器连接外网的网卡名称：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/4-_Q-WbUvLbnPtsOnhUjpw==/2590695685646225586.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/4-_Q-WbUvLbnPtsOnhUjpw==/2590695685646225586.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;做以下配置：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/igo3oxTO8OimFFEFuRjstA==/2590695685646225587.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/igo3oxTO8OimFFEFuRjstA==/2590695685646225587.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;还要配置一下VPN网关：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/e88hZf1eSREjJRkSlwhpSA==/2590695685646225588.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/e88hZf1eSREjJRkSlwhpSA==/2590695685646225588.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/I3DerjmbQSCtSRKVBGlnsA==/2590695685646225589.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/I3DerjmbQSCtSRKVBGlnsA==/2590695685646225589.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;保证VPN（PPTP）被 选中！&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/3WWr3Z-C1lVf1Y21vujefg==/2590695685646225590.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/3WWr3Z-C1lVf1Y21vujefg==/2590695685646225590.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;第四步：设置VPN最大连接数：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/vnfqiK6DnQGgIdUCT1_pxQ==/2590695685646225591.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/vnfqiK6DnQGgIdUCT1_pxQ==/2590695685646225591.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Windows Server 2003企业版最多支持30000个L2TP端口，16384个PPTP端口&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/9U9r946ZBTnZ6VzX6IT-Ug==/2590695685646225592.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/9U9r946ZBTnZ6VzX6IT-Ug==/2590695685646225592.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;第五步：设置VPN基本属性：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/tsQs8ezLD3D773LXb6LpFg==/2590695685646225593.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/tsQs8ezLD3D773LXb6LpFg==/2590695685646225593.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;添加静态地址，最好不要和内网地址一样！&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/ULnhjaubP5lXslJTEjn22A==/2590695685646225594.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/ULnhjaubP5lXslJTEjn22A==/2590695685646225594.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;第六步：配置远程访问策略：&lt;/p&gt; &lt;p&gt;先在服务器中建立一个组，把要远程登入VPN的用户都加进这个组中！&lt;/p&gt; &lt;p&gt;然后新建策略：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/IeSscZ5fh_SIIv4RL9XEdA==/2590695685646225597.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/IeSscZ5fh_SIIv4RL9XEdA==/2590695685646225597.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;随便写个名：&lt;/p&gt; &lt;p&gt;&lt;a href="http://img.bimg.126.net/photo/uFzpBzb2DtxbgK9KX9ViGQ==/2590695685646225599.jpg" target="_blank"&gt;&lt;img title="windows2003 配置VPN - wisp - 月月鸟" alt="windows2003 配置VPN - wisp - 月月鸟" src="http://img.bimg.126.net/photo/uFzpBzb2DtxbgK9KX9ViGQ==/2590695685646225599.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;下一步就把刚才新建的组加到策略中，就完成策略！&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://lihuipeng007.blog.163.com/blog/static/1210843882009101104818401/?fromdm&amp;amp;isFromSearchEngine=yes"&gt;http://lihuipeng007.blog.163.com/blog/static/1210843882009101104818401/?fromdm&amp;amp;isFromSearchEngine=yes&lt;/a&gt;&lt;br&gt; &lt;/p&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-5737994483422832420?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/5737994483422832420/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=5737994483422832420' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5737994483422832420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5737994483422832420'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/windows2003-vpn.html' title='windows2003 配置VPN（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-8405847972935553751</id><published>2010-12-20T16:44:00.000+08:00</published><updated>2010-12-20T16:47:04.323+08:00</updated><title type='text'>如何用Windows VPS搭建翻墙VPN（转）</title><content type='html'>&lt;p&gt;最近从&lt;a style="display: inline; overflow: hidden; padding-left: 0px;" title="photonvps" href="http://www.photonvps.com/billing/aff.php?aff=499" target="_blank" class="external"&gt;Photonvps.com&lt;/a&gt; 租了一台windows主机用来测试网站，512MB的内存，35GB的硬盘空间，每个月500GB的流量和2个独立IP地址。我感觉价格偏贵，不过售后服务还是蛮不错的，每次提交的ticket很快就会得到回复。&lt;/p&gt;  &lt;p&gt;既然有两个IP当然不能浪费了，干脆做个windows VPN用来翻墙。下面详细图文介绍如何用Windows VPS搭建翻墙VPN服务器。首先我们要保证vpn起用的条件,"一停四开"：&lt;br&gt; 1.停止window自带的防火墙(windows firewall/internet connection sharing (ICS)服务&lt;br&gt; 2.远程注册表服务（Remote Registry)必须开启&lt;br&gt; 3.server服务 (Server)必须开启&lt;br&gt; 4.route路由服务(Routing and Remote Access)必须开启&lt;br&gt; 5.Workstation 服务必须开启&lt;br&gt; &lt;strong&gt;如果服务器是默认配置的情况下，只需要关闭防火墙就并设置启动方式为禁用。&lt;/strong&gt;然后在管理工具中打开"路由和远程访问"在列出的本地服务器上点击右键，选择"配置并启用路由和远程访问"。&lt;span id="more-942"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="undefined" style="display: inline; overflow: hidden; padding-left: 0px;" href="http://www.fendou.info/wp-content/uploads/2010/04/1.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img class="aligncenter size-full wp-image-943" title="1" src="http://www.fendou.info/wp-content/uploads/2010/04/1.jpg" alt="" height="312" width="608"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;由于Windows VPS服务器是公网上的一台一般的服务器，不是具有路由功能的服务器，是单网卡的，所以这里选择"自定义配置"&lt;/strong&gt;。&lt;strong&gt;这里选"VPN访问"和"NAT/基本防火墙"。下一步，配置向导完成。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="" style="display: inline; overflow: hidden; padding-left: 0px;" href="http://www.fendou.info/wp-content/uploads/2010/04/21.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img class="aligncenter size-full wp-image-945" title="2" src="http://www.fendou.info/wp-content/uploads/2010/04/21.jpg" alt="" height="464" width="606"&gt;&lt;/a&gt;&lt;br&gt;  点击"是"，开始服务。看启动了VPN服务后，"路由和远程访问"的界面下面开始配置VPN服务器,在服务器上点击右键，选择 "属性"，在弹出的窗口中选择"IP"标签，在"IP地址指派"中选择"静态地址池"。&lt;/p&gt; &lt;p&gt;&lt;a title="" style="display: inline; overflow: hidden; padding-left: 0px;" href="http://www.fendou.info/wp-content/uploads/2010/04/3.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-946" title="3" src="http://www.fendou.info/wp-content/uploads/2010/04/3.jpg" alt="" height="501" width="631"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;然后点击"添加"按钮设置IP地址范围，&lt;strong&gt;这个IP范围就是VPN局域网内部的虚拟IP地址范围，每个拨入到VPN的服务器都会分配到一个范围内的IP，在虚拟局域网中用这个IP相互访问。&lt;/strong&gt;这里设置为 10.10.10.1-10.10.10.10，一共10个IP，默认的VPN服务器占用第一个IP，所以，10.10.10.1实际上就是这个VPN服务器在虚拟局域网的IP。&lt;br&gt; 每个客户端拨入VPN服务器都需要有一个帐号，默认是  windows身份验证，所以要给每个需要拨入到VPN的客户端设置一个用户，并为这个用户制定一个固定的内部虚拟IP以便客户端之间相互访问。在管理工 具中的计算机管理里添加用户，这里以添加一个vpnuser用户为例：先新建一个叫"vpnuser"的用户，创建好后，查看这个用户的属性，在"拨入" 标签中做相应的设置，如图：&lt;/p&gt; &lt;p&gt;&lt;a title="" style="display: inline; overflow: hidden; padding-left: 0px;" href="http://www.fendou.info/wp-content/uploads/2010/04/4.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-948" title="4" src="http://www.fendou.info/wp-content/uploads/2010/04/4.jpg" alt="" height="499" width="619"&gt;&lt;/a&gt;&lt;br&gt;  远程访问权限设置为"允许访问"，以允许这个用户通过VPN拨入服务器。点选"分配静态IP地址"，并设置一个VPN服务器中静态IP池范围内的一个IP 地址，这里设为10.10.10.10  。如果有多个客户端机器要接入VPN，请给每个客户端都新建一个用户，并设定一个虚拟IP地址，各个客户端都使用分配给自己的用户拨入VPN，这样各个客 户端每次拨入VPN后都会得到相同的IP。如果用户没设置为"分配静态IP地址"，客户端每次拨入到VPN，VPN服务器会随机给这个客户端分配一个范围 内的IP。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;至此，客户端就可以直接通过windows连接向导连接VPN服务器了，但是服务器还没有完全配置完，这里需要特别说明一下：我们搭建VPN服务器的目的是翻墙，而不是访问服务器所在的内网。&lt;/strong&gt;如果仅仅是为了访问内网资源而搭建VPN请看&lt;a style="display: inline; overflow: hidden; padding-left: 0px;" title="windows2003-set-up-vpn" href="http://www.fendou.info/network/windows2003-set-up-vpn.html" target="_blank"&gt;《windows2003架设VPN穿越Juniper防火墙设置步骤》&lt;/a&gt;这篇文章介绍了用Windows2003搭建VPN需要注意的细节及通过VPN跨网段访问内网资源的设置。&lt;/p&gt;  &lt;p&gt;再回到路由和远程控制，找到"NAT/基本防火墙"右键点击新建接口并选择本地区域链接。如图：&lt;/p&gt; &lt;p&gt;&lt;a title="" style="display: inline; overflow: hidden; padding-left: 0px;" href="http://www.fendou.info/wp-content/uploads/2010/04/5.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-949" title="5" src="http://www.fendou.info/wp-content/uploads/2010/04/5.jpg" alt="" height="461" width="617"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;在NAT/基本防火墙设置中选择公共接口链接到Internet，并在这个接口上启用NAT。如图：&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.fendou.info/wp-content/uploads/2010/04/6.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-950" title="6" src="http://www.fendou.info/wp-content/uploads/2010/04/6.jpg" alt="" height="452" width="666"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;选择IP地址池选项卡，将ISP也就是你的主机供应商分配给的公网IP地址添上。如图：&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.fendou.info/wp-content/uploads/2010/04/7.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-951" title="7" src="http://www.fendou.info/wp-content/uploads/2010/04/7.jpg" alt="" height="421" width="615"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;为了维护起来方便，我们可以将VPN用户名和IP绑定起来，也就说每个用户连接VPN会分到固定的IP地址，点击预留IP将公网IP和私有IP进行 绑定，我刚刚建立了一个vpnuser的用户并给此用户分配了私有IP：10.10.10.10 那么我就把这个私有IP绑定在多余的IP地址上。如图：&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.fendou.info/wp-content/uploads/2010/04/81.jpg" class="highslide-image" rel="lightbox[942]"&gt;&lt;img style="overflow: visible;" class="aligncenter size-full wp-image-953" title="8" src="http://www.fendou.info/wp-content/uploads/2010/04/81.jpg" alt="" height="457" width="616"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;OK！到这里VPN就配置完成了。尽情享受翻墙的乐趣吧！&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://www.fendou.info/network/windows-vps-vpn.html"&gt;http://www.fendou.info/network/windows-vps-vpn.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-8405847972935553751?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/8405847972935553751/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=8405847972935553751' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/8405847972935553751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/8405847972935553751'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/windows-vpsvpn.html' title='如何用Windows VPS搭建翻墙VPN（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-9075399112524907168</id><published>2010-12-18T11:24:00.001+08:00</published><updated>2010-12-18T11:24:44.588+08:00</updated><title type='text'>一个简单好用的AJAX类，支持超时处理，兼容IE6/IE7/IE8/firefox/chrome/opera（转）</title><content type='html'>&lt;p&gt;做一回标题党，因为很多人会通过那些关键字搜索进来。是否&amp;ldquo;简单好用&amp;rdquo;不太好说，因人而异，但后面两句还是比较靠谱的。&lt;br&gt;&lt;br&gt;&lt;br&gt;这个AJAX&amp;ldquo;类&amp;rdquo;是自己几年前写的，最近抽空整理了一下发出来，供新手或有需要的人参考&lt;br&gt;&lt;br&gt;在用AJAX的时候，一般只需要关心三个步骤：&lt;br&gt;&lt;br&gt;1） 请求发送前做什么；&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如：展现给用户一个loading的图片或文字信息。&lt;br&gt;&lt;br&gt;&lt;br&gt;2） 发送请求； &lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里有三个参数：url&amp;mdash;发送到哪里，data&amp;mdash;发送什么数据，method&amp;mdash;用什么方式发送数据（GET or POST）&lt;br&gt;&lt;br&gt;&lt;br&gt;3） 请求返回后做什么；&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如：将返回后的数据直接或组织成html后插入到页面中展现给用户。&lt;br&gt;&lt;br&gt;&lt;br&gt;考虑在某些情况下，请求返回的时间很长甚至没有返回，如果一直在loading，恐怕不是一种好的用户体验。所以增加一个在超时的情况下要做的步骤。&lt;br&gt; &lt;br&gt;&lt;br&gt;由于GET方式经常用，所以单独为它准备了一个方法。&lt;br&gt;&lt;br&gt;&lt;br&gt;在demo中的test3，除了演示另一种调用方式外，还演示了客户端和服务端之间通过JSON进行通信。&lt;br&gt;&lt;br&gt;&lt;img src="http://dl.javaeye.com/upload/attachment/260480/b9da6ae5-720c-32c3-9546-683e78680464.png" alt=""&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt; 最 后面附有完整demo的源代码供下载 &amp;lt;script src=&amp;quot;/javascripts/tinymce/themes/advanced/langs/zh.js&amp;quot;  type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script  src=&amp;quot;/javascripts/tinymce/plugins/javaeye/langs/zh.js&amp;quot;  type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt; &lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Js代码 &lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-c" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;/*!&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;一个简单的Ajax类&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;author:&amp;nbsp;&lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;date:&amp;nbsp;&amp;nbsp;&amp;nbsp;2010/06/04&amp;nbsp;Friday&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;@param&amp;nbsp;function&amp;nbsp;fnBefore&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户自定义函数&amp;nbsp;Ajax开始前执行，若无则为null&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;@param&amp;nbsp;function&amp;nbsp;fnAfter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户自定义函数&amp;nbsp;Ajax完成后执行，若无则为null&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;@param&amp;nbsp;function&amp;nbsp;fnTimeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户自定义函数&amp;nbsp;Ajax请求超时后执行，若无则为null&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;@param&amp;nbsp;integer&amp;nbsp;&amp;nbsp;iTime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设置超时时间&amp;nbsp;单位毫秒&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*&amp;nbsp;@param&amp;nbsp;boolean&amp;nbsp;&amp;nbsp;bSync&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;是否为同步请求，默认为false&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;&amp;nbsp;Ajax(fnBefore,fnAfter,fnTimeout,iTime,bSync){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.before&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;fnBefore;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.after&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;fnAfter;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;fnTimeout;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;iTime&amp;nbsp;?&amp;nbsp;iTime&amp;nbsp;:&amp;nbsp;10000;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.async&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;bSync&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;false&lt;/span&gt;&lt;span&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._response&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Ajax.prototype&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;将需要发送的数据进行编码&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;@param&amp;nbsp;object&amp;nbsp;data&amp;nbsp;&amp;nbsp;JSON格式的数据，如:&amp;nbsp;{username:&amp;quot;fyland&amp;quot;,password:&amp;quot;ichenshy&amp;quot;}&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;formatParam&amp;nbsp;:&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(&amp;nbsp;data&amp;nbsp;){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;!&amp;nbsp;data&amp;nbsp;||&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;typeof&lt;/span&gt;&lt;span&gt;&amp;nbsp;data&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;object&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;data;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;k,r&amp;nbsp;=&amp;nbsp;[];&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;k&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;data&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r.push([k,&lt;span class="string"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;&lt;span&gt;,encodeURIComponent(data[k])].join(&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;r.join(&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;amp;&amp;#39;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;创建&amp;nbsp;XMLHttpRequest对象&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;:&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(&amp;nbsp;window.XMLHttpRequest&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;XMLHttpRequest();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;window.ActiveXObject(&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Microsoft.XMLHTTP&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;catch&lt;/span&gt;&lt;span&gt;(e)&amp;nbsp;{}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;发送请求&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;请求地址&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;object&amp;nbsp;or&amp;nbsp;string&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可以是字符串或JSON格式的数据，如:&amp;nbsp;{username:&amp;quot;fyland&amp;quot;,password:&amp;quot;ichenshy&amp;quot;}&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method&amp;nbsp;&amp;nbsp;请求方式&amp;nbsp;：&amp;nbsp;GET&amp;nbsp;or&amp;nbsp;POST&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ifCache&amp;nbsp;返回数据是否在浏览器端缓存，默认为false;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;send&amp;nbsp;:&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(url,data,method,ifCache){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;typeof&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.before&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.before();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method&amp;nbsp;=&amp;nbsp;method.toUpperCase();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.create();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;self&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;timer&amp;nbsp;=&amp;nbsp;setTimeout(&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;typeof&lt;/span&gt;&lt;span&gt;&amp;nbsp;self.timeout&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;)&amp;nbsp;self.timeout();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;self._request&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self._request.abort();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self._request&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.time);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;sendBody&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.formatParam(data);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;GET&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;==&amp;nbsp;method&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;=&amp;nbsp;[url,&amp;nbsp;(&amp;nbsp;url.indexOf(&lt;span class="string"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span&gt;)&amp;nbsp;==&amp;nbsp;-1&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;amp;&amp;#39;&lt;/span&gt;&lt;span&gt;)&amp;nbsp;,sendBody].join(&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sendBody&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;!&amp;nbsp;ifCache&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;=&amp;nbsp;[url,&amp;nbsp;(&amp;nbsp;url.indexOf(&lt;span class="string"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span&gt;)&amp;nbsp;==&amp;nbsp;-1&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;amp;&amp;#39;&lt;/span&gt;&lt;span&gt;)&amp;nbsp;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;ajaxtimestamp=&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;,&amp;nbsp;(&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Date()).getTime()].join(&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request.open(method,url,&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.async);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;==&amp;nbsp;method&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request.setRequestHeader(&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request.onreadystatechange&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(&amp;nbsp;self._request.readyState==4&amp;nbsp;){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;self._request.status==200&amp;nbsp;){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;timer&amp;nbsp;)&amp;nbsp;clearTimeout(timer);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self._response&amp;nbsp;=&amp;nbsp;self._request.responseText;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;typeof&lt;/span&gt;&lt;span&gt;&amp;nbsp;self.after&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span&gt;)&amp;nbsp;self.after(self._response);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;._request.send(&amp;nbsp;sendBody&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;简单的GET请求&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;url&amp;nbsp;&amp;nbsp;请求地址&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;@param&amp;nbsp;null&amp;nbsp;or&amp;nbsp;string&amp;nbsp;or&amp;nbsp;object&amp;nbsp;data&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;@param&amp;nbsp;object&amp;nbsp;html&amp;nbsp;element&amp;nbsp;or&amp;nbsp;string&amp;nbsp;id&amp;nbsp;&amp;nbsp;&amp;nbsp;e&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;@param&amp;nbsp;string&amp;nbsp;loading&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loading时在e中的显示&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;@param&amp;nbsp;boolean&amp;nbsp;&amp;nbsp;ifCache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;浏览器是否缓存&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get&amp;nbsp;:&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(url,data,e,loading,ifCache){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;typeof&lt;/span&gt;&lt;span&gt;&amp;nbsp;e&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;)&amp;nbsp;e&amp;nbsp;=&amp;nbsp;document.getElementById(e);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;loading&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;rg&amp;nbsp;=&amp;nbsp;/\.(gif|jpg|jpeg|png|bmp)$/i;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;rg.test(loading)&amp;nbsp;){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loading&amp;nbsp;=&amp;nbsp;[&lt;span class="string"&gt;&amp;#39;&amp;lt;img&amp;nbsp;src=&amp;quot;&amp;#39;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;loading&amp;nbsp;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;quot;&amp;nbsp;&amp;nbsp;align=&amp;quot;absmiddle&amp;quot;&amp;nbsp;/&amp;gt;&amp;#39;&lt;/span&gt;&lt;span&gt;].join(&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.before&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){e.innerHTML&amp;nbsp;=&amp;nbsp;loading;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.after&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(s){e.innerHTML&amp;nbsp;=&amp;nbsp;s;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){e.innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;nbsp;请求超时!&amp;nbsp;&amp;#39;&lt;/span&gt;&lt;span&gt;;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.send(url,data,&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&lt;span&gt;,ifCache&amp;nbsp;?&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;false&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="js"&gt;/*! * 一个简单的Ajax类 * author: &lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt; * date:   2010/06/04 Friday * * @param function fnBefore     用户自定义函数 Ajax开始前执行，若无则为null * @param function fnAfter      用户自定义函数 Ajax完成后执行，若无则为null * @param function fnTimeout    用户自定义函数 Ajax请求超时后执行，若无则为null * @param integer  iTime        设置超时时间 单位毫秒 * @param boolean  bSync        是否为同步请求，默认为false */  function Ajax(fnBefore,fnAfter,fnTimeout,iTime,bSync){ 	this.before		= fnBefore; 	this.after		= fnAfter; 	this.timeout	= fnTimeout; 	this.time		= iTime ? iTime : 10000; 	this.async		= bSync ? false : true; 	this._request	= null; 	this._response	= null; }  Ajax.prototype = { 	/** 	*  将需要发送的数据进行编码 	* 	*  @param object data  JSON格式的数据，如: {username:&amp;quot;fyland&amp;quot;,password:&amp;quot;ichenshy&amp;quot;} 	*/ 	formatParam : function( data ){ 		if ( ! data || typeof data != &amp;quot;object&amp;quot; ) return data; 		var k,r = []; 		for ( k in data ) { 			r.push([k,&amp;#39;=&amp;#39;,encodeURIComponent(data[k])].join(&amp;#39;&amp;#39;)); 		} 		return r.join(&amp;#39;&amp;amp;&amp;#39;); 	},  	/** 	* 创建 XMLHttpRequest对象 	*/ 	create : function(){ 		if( window.XMLHttpRequest ) { 			this._request = new XMLHttpRequest(); 		} else { 			try { 				this._request = new window.ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;); 			} catch(e) {} 		} 	},  	/** 	* 发送请求 	* 	* @param string				url     请求地址 	* @param object or string   data    可以是字符串或JSON格式的数据，如: {username:&amp;quot;fyland&amp;quot;,password:&amp;quot;ichenshy&amp;quot;} 	* @param string             method  请求方式 ： GET or POST 	* @param boolean            ifCache	返回数据是否在浏览器端缓存，默认为false; 	*/ 	send : function(url,data,method,ifCache){ 		if ( typeof this.before == &amp;quot;function&amp;quot; ) this.before();  		method = method.toUpperCase(); 		this.create();  		var self = this; 		var timer = setTimeout(function(){ 				if ( typeof self.timeout == &amp;quot;function&amp;quot; ) self.timeout(); 				if ( self._request ) { 					self._request.abort(); 					self._request = null; 				} 				return true; 			},this.time);  		var sendBody  = this.formatParam(data);  		if ( &amp;#39;GET&amp;#39; == method ) { 			url = [url, ( url.indexOf(&amp;#39;?&amp;#39;) == -1 ? &amp;#39;?&amp;#39; : &amp;#39;&amp;amp;&amp;#39;) ,sendBody].join(&amp;#39;&amp;#39;); 			sendBody = null; 		}  		if ( ! ifCache ) { 			url = [url, ( url.indexOf(&amp;#39;?&amp;#39;) == -1 ? &amp;#39;?&amp;#39; : &amp;#39;&amp;amp;&amp;#39;) , &amp;quot;ajaxtimestamp=&amp;quot; , (new Date()).getTime()].join(&amp;#39;&amp;#39;); 		}  		this._request.open(method,url,this.async); 		if ( &amp;quot;POST&amp;quot; == method ) this._request.setRequestHeader(&amp;quot;Content-Type&amp;quot;, &amp;quot;application/x-www-form-urlencoded&amp;quot;);  		this._request.onreadystatechange = function(){ 			if( self._request.readyState==4 ){ 				if ( self._request.status==200 ){ 					if ( timer ) clearTimeout(timer); 					self._response = self._request.responseText; 					if ( typeof self.after == &amp;quot;function&amp;quot;) self.after(self._response); 				} 			} 		} 		this._request.send( sendBody ); 	},  	/** 	*   简单的GET请求 	* 	*   @param string url  请求地址 	*   @param null or string or object	data 	*   @param object html element or string id	  e 	*   @param string loading                     loading时在e中的显示 	*   @param boolean  ifCache    浏览器是否缓存 	*/ 	get : function(url,data,e,loading,ifCache){ 			if ( typeof e == &amp;quot;string&amp;quot; ) e = document.getElementById(e); 			if ( loading ) { 				var rg = /\.(gif|jpg|jpeg|png|bmp)$/i; 				if ( rg.test(loading) ){ 					loading = [&amp;#39;&amp;lt;img src=&amp;quot;&amp;#39;, loading , &amp;#39;&amp;quot;  align=&amp;quot;absmiddle&amp;quot; /&amp;gt;&amp;#39;].join(&amp;#39;&amp;#39;); 				} 				this.before = function(){e.innerHTML = loading;} 			} 			this.after		= function(s){e.innerHTML = s;} 			this.timeout	= function(){e.innerHTML = &amp;#39; 请求超时! &amp;#39;;} 			this.send(url,data,&amp;quot;GET&amp;quot;,ifCache ? true : false); 	} };&lt;/pre&gt; &lt;p&gt; &amp;nbsp;&lt;br&gt;&lt;br&gt;常用调用方式：&lt;/p&gt; &lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Js代码 &lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-c" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;&amp;nbsp;test1(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Ajax()).get(&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;./process.php?test=1&amp;quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span&gt;,$(&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;test1正在读取数据&amp;hellip;&amp;hellip;&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;这里可以传入一个loading的图片地址&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;&amp;nbsp;test2(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Ajax(&lt;/span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;test2正在读取数据，请稍候&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(s){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;s;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Sorry,请求超时！&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},5000)&amp;nbsp;).send(&lt;span class="string"&gt;&amp;quot;./process.php?test=2&amp;quot;&lt;/span&gt;&lt;span&gt;,{author:&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;fyland&amp;quot;&lt;/span&gt;&lt;span&gt;,mail:&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;&lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,date:&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;2010-06-03&amp;quot;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;&amp;nbsp;test3(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;jx&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Ajax();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jx.before&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;test3正在读取数据，请稍候&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jx.after&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(s){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;jsonDecode(s);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;k&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;r&amp;nbsp;){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(k&amp;nbsp;+&amp;nbsp;&lt;span class="string"&gt;&amp;#39;&amp;nbsp;:&amp;nbsp;&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;r[k]);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;test3数据读取完毕&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jx.timeout&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt;(){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class="string"&gt;&amp;quot;view&amp;quot;&lt;/span&gt;&lt;span&gt;).innerHTML&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Sorry,TEST3请求超时！&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jx.time&amp;nbsp;=&amp;nbsp;5000;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;data&amp;nbsp;=&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;author:&amp;nbsp;&lt;span class="string"&gt;&amp;quot;fyland&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span class="string"&gt;&amp;quot;&lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;date&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span class="string"&gt;&amp;quot;2010-06-03&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jx.send(&lt;span class="string"&gt;&amp;quot;./process.php?test=3&amp;quot;&lt;/span&gt;&lt;span&gt;,data,&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="js"&gt;function test1(){ 	 (new Ajax()).get(&amp;quot;./process.php?test=1&amp;quot;,&amp;#39;&amp;#39;,$(&amp;quot;view&amp;quot;),&amp;quot;test1正在读取数据&amp;hellip;&amp;hellip;&amp;quot;); // 这里可以传入一个loading的图片地址 }  function test2(){ 	(new Ajax(function(){ 		$(&amp;quot;view&amp;quot;).innerHTML = &amp;quot;test2正在读取数据，请稍候&amp;quot;; 	},function(s){ 		$(&amp;quot;view&amp;quot;).innerHTML = s; 	},function(){ 		$(&amp;quot;view&amp;quot;).innerHTML = &amp;quot;Sorry,请求超时！&amp;quot;; 	},5000) ).send(&amp;quot;./process.php?test=2&amp;quot;,{author:&amp;quot;fyland&amp;quot;,mail:&amp;quot;&lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt;&amp;quot;,date:&amp;quot;2010-06-03&amp;quot;},&amp;quot;POST&amp;quot;); }  function test3(){ 	var jx = new Ajax(); 	jx.before = function(){ 		$(&amp;quot;view&amp;quot;).innerHTML = &amp;quot;test3正在读取数据，请稍候&amp;quot;; 	}  	jx.after = function(s){ 		var r = jsonDecode(s); 		for ( var k in r ){ 			alert(k + &amp;#39; : &amp;#39; + r[k]); 		} 		$(&amp;quot;view&amp;quot;).innerHTML = &amp;quot;test3数据读取完毕&amp;quot;; 	}  	jx.timeout = function(){ 		$(&amp;quot;view&amp;quot;).innerHTML = &amp;quot;Sorry,TEST3请求超时！&amp;quot;; 	}  	jx.time = 5000;  	var data = { 					author: &amp;quot;fyland&amp;quot;, 					mail  : &amp;quot;&lt;a href="mailto:ichenshy@gmail.com"&gt;ichenshy@gmail.com&lt;/a&gt;&amp;quot;, 					date  : &amp;quot;2010-06-03&amp;quot; 				};  	jx.send(&amp;quot;./process.php?test=3&amp;quot;,data,&amp;quot;GET&amp;quot;); } &lt;/pre&gt; &lt;p&gt; &amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;注：&lt;br&gt;1、method只支持GET和POST&lt;br&gt;2、ifCache设为false或者不设置，可以控制浏览器不缓存，但设为true后，不一定能控制浏览器缓存返回的数据，因为还需要服务端的配合。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;                 &lt;div class="attachments"&gt;                     &lt;ul style="display: none;"&gt;&lt;li&gt;&lt;a href="http://dl.javaeye.com/upload/attachment/260480/b9da6ae5-720c-32c3-9546-683e78680464.png" target="_blank"&gt;&lt;img src="http://dl.javaeye.com/upload/attachment/260480/b9da6ae5-720c-32c3-9546-683e78680464-thumb.png" class="magplus" title="点击查看原始大小图片"&gt;&lt;/a&gt;&lt;/li&gt; &lt;li&gt;大小: 4.6 KB&lt;/li&gt;&lt;/ul&gt;                            &lt;ul&gt;&lt;li&gt;&lt;a href="http://dl.javaeye.com/topics/download/d82cde85-0e23-39a9-a992-a8faf12d5967"&gt;demo-ajax.rar&lt;/a&gt; (3.7 KB)&lt;/li&gt;&lt;li&gt;下载次数: 392&lt;/li&gt;&lt;/ul&gt;                        &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.javaeye.com/topic/685578#"&gt;查看图片附件&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;摘自：&lt;a href="http://www.javaeye.com/topic/685578"&gt;http://www.javaeye.com/topic/685578&lt;/a&gt;&lt;br&gt;        &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-9075399112524907168?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/9075399112524907168/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=9075399112524907168' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/9075399112524907168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/9075399112524907168'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/ajaxie6ie7ie8firefoxchromeopera.html' title='一个简单好用的AJAX类，支持超时处理，兼容IE6/IE7/IE8/firefox/chrome/opera（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1824860419815789383</id><published>2010-12-17T12:03:00.001+08:00</published><updated>2010-12-17T12:03:04.642+08:00</updated><title type='text'>Mysql5一主库两从库同步配置（转）</title><content type='html'>&lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&lt;font&gt;一、&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;安装包选择&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql-5.0.67.tar.gz&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（安装在主库机：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;server1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql-5.0.45.tar.gz&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（安装在从库机：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;server2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;MySQL-client-community-5.0.67-0.sles10.i586.rpm&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;MySQL-server-community-5.0.67-0.sles10.i586.rpm&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（安装在从库机：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;server3&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;最好使用同一版本的安装包。在这里只是想试验一下。&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;二、安装环境&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;192.168.100.188&lt;span style=""&gt;  &lt;/span&gt;RHEL5.1&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数据文件的存放位置&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/usr/local/mysql5/var &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;待同步数据库&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;juwang&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;test&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;192.168.100.39&lt;span style=""&gt;   &lt;/span&gt;CentOS5.2&lt;span style=""&gt;  &lt;/span&gt;/usr/local/mysql/var&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;192.168.100.15&lt;span style=""&gt;   &lt;/span&gt;OpenSuSE11&lt;span style=""&gt;  &lt;/span&gt;/var/lib/mysql&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;rpm&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;suse&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务启动：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/etc/init.d/mysql&lt;span style=""&gt;  &lt;/span&gt;start&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;在源码包安装在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;CentOS&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;RHEL5.1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务分别为：&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/usr/local/mysql/bin/mysqld_safe –user=mysql &amp;amp;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/usr/local/mysql/bin/mysqld_safe –user=mysql &amp;amp;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;停止服务：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;bin/mysqladmin shutdown&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;三、主服务器配置&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）建立用户&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;grant&lt;span style=""&gt;  &lt;/span&gt;replication&lt;span style=""&gt;  &lt;/span&gt;slave .&lt;span style=""&gt;  &lt;/span&gt;*.*&lt;span style=""&gt;  &lt;/span&gt;to&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;a href="mailto:slave1@192.168.100.39"&gt;&lt;font&gt;slave1@192.168.100.39&lt;/font&gt;&lt;/a&gt;&lt;font&gt; &lt;span style=""&gt; &lt;/span&gt;identified by '123456';&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;grant&lt;span style=""&gt;  &lt;/span&gt;replication&lt;span style=""&gt;  &lt;/span&gt;slave .&lt;span style=""&gt;  &lt;/span&gt;*.*&lt;span style=""&gt;  &lt;/span&gt;to&lt;span style=""&gt;  &lt;/span&gt;&lt;/font&gt;&lt;a href="mailto:slave2@192.168.100.15"&gt;&lt;font&gt;slave2@192.168.100.15&lt;/font&gt;&lt;/a&gt;&lt;font&gt;&lt;span style=""&gt;  &lt;/span&gt;identified by '123456';&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;flush&lt;span style=""&gt;  &lt;/span&gt;privileges;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）修改&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;my.cnf&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;vi&lt;span style=""&gt;  &lt;/span&gt;/etc/my.cnf&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;server-id = 1&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;log-slave-updates&lt;br&gt;binlog-do-db=juwang&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: wingdings;" lang="EN-US"&gt;&lt;span style=""&gt;ç&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;关于复制的数据库一定要分开写。不能写成&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;binlog-do-db=juwang,test&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;。这是无效的，两个数据库一个都不会复制。&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;binlog-do-db=test&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;binlog-ignore-db=mysql&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;3&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;锁主库表&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;mysql&amp;gt; FLUSH TABLES WITH READ LOCK;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;4&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;显示主库信息&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;SHOW MASTER STATUS;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;5&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;另开一个终端，打包主库&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;cd&lt;span style=""&gt;  &lt;/span&gt;/usr/local/mysql5/var&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;tar&lt;span style=""&gt;  &lt;/span&gt;czvf&lt;span style=""&gt;  &lt;/span&gt;juwang.tar.gz&lt;span style=""&gt;  &lt;/span&gt;juwang&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;四、设置&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;SLAVE&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）传输主库压缩包、解压&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;cd&lt;span style=""&gt;  &lt;/span&gt;/usr/local/mysql/var&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;scp&lt;span style=""&gt;  &lt;/span&gt;/usr/local/mysql5/var/juwang.tar.gz .&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;tar&lt;span style=""&gt;  &lt;/span&gt;xf&lt;span style=""&gt;  &lt;/span&gt;juwan.tar.gz&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）解锁主库表&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;mysql&amp;gt; UNLOCK TABLES;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a name="OLE_LINK26"&gt;&lt;/a&gt;&lt;a name="OLE_LINK25"&gt;&lt;span style=""&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;3&lt;/font&gt;&lt;/span&gt;&lt;a name="OLE_LINK28"&gt;&lt;/a&gt;&lt;a name="OLE_LINK27"&gt;&lt;span style=""&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;查看修改&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;juwang&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;文件夹权限&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;# chown mysql:mysql juwang –R&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;4&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;修改&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;my.cnf&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;CentOS&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a name="OLE_LINK22"&gt;&lt;/a&gt;&lt;a name="OLE_LINK21"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;server-id=2&lt;br&gt;master-host=192.168.100.188&lt;br&gt;master-user=slave1&lt;br&gt; master-password=123456&lt;br&gt;master-port=3306&lt;br&gt;replicate-do-db=juwang&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;replicate-do-db=test &lt;br&gt;log-slave-updates&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;修改&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;my.cnf&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;SuSe&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;server-id=3&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: wingdings;" lang="EN-US"&gt;&lt;span style=""&gt;ç&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;千万别和其它机器的&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;server-id&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;号写重名了。&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;br&gt; master-host=192.168.100.188&lt;br&gt;master-user=slave2&lt;br&gt;master-password=123456&lt;br&gt;master-port=3306&lt;br&gt;replicate-do-db=juwang&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;replicate-do-db=test &lt;br&gt;log-slave-updates&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;验证连接&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;MASTER&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a name="OLE_LINK24"&gt;&lt;/a&gt;&lt;a name="OLE_LINK23"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;# mysql -h192.168.100.188 –uslave1 –p123456&lt;br&gt;mysql&amp;gt; show grants for &lt;u&gt;slave1@192.168.100.39&lt;/u&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt; &lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;# mysql -h192.168.100.188 –uslave2 –p123456&lt;br&gt;mysql&amp;gt; show grants for &lt;u&gt;&lt;a href="mailto:slave1@192.168.100.39"&gt;slave1@192.168.100.39&lt;/a&gt;&lt;/u&gt;;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;6&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;SLAVE&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;上设置同步&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;设置连接&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;MASTER MASTER_LOG_FILE&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;为主库的&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;File&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;MASTER_LOG_POS&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;为主库的&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;Position&lt;br&gt; ============================&lt;br&gt;mysql&amp;gt;  CHANGE MASTER TO  MASTER_HOST=&amp;#39;192.168.100.188&amp;#39;,MASTER_USER=&amp;#39;slave&amp;#39;,MASTER_PASSWORD=&amp;#39;123456&amp;#39;,MASTER_LOG_FILE=&amp;#39;mysql-bin.000005&amp;#39;,MASTER_LOG_POS=98;&lt;br&gt;============================&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;7&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;启动&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;SLAVE&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;服务&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;mysql&amp;gt; slave start;&lt;br&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;查看&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;SLAVE&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;状态&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;mysql&amp;gt; SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;其中&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; Slave_IO_Running &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &lt;a name="OLE_LINK20"&gt;&lt;/a&gt;&lt;a name="OLE_LINK19"&gt;&lt;span style=""&gt;Slave_SQL_Running &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;两列的值都为&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &amp;quot;Yes&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;，表明&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; Slave &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; I/O &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; SQL &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;线程都在正常运行。&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;到此主从库搭建成功。&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;在配置过程中出现：&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt;Slave_SQL_Running &lt;/span&gt;&lt;span style="font-size: 9pt; color: black; font-family: 宋体;"&gt;的值都为&lt;/span&gt;&lt;span style="font-size: 9pt; color: black;" lang="EN-US"&gt; &amp;quot;No&amp;quot;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; show slave status\G;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Slave_IO_Running: Yes&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Slave_SQL_Running: No&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Last_Errno: 1062&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;原因：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;程序可能在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;slave&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上进行了写操作&lt;/span&gt;&lt;font&gt; &lt;/font&gt;&lt;span style="font-family: 宋体;"&gt;。（我确定这样操作过。）&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;2.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也可能是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;slave&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;机器重起后，事务回滚造成的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;解决办法&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;I&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;首先停掉&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Slave&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;slave stop&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;到主服务器上查看主机状态：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;记录&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;File&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Position&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;对应的值。&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;3.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;slave&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器上执行手动同步：&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; show master status;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;在从库机上操作如下：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;注意：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/etc/init.d/mysql start &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;SuSe&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中），应这样启动服务：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;/etc/init.d/mysql&lt;span style=""&gt;  &lt;/span&gt;--skip-slave-start&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; change master to &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_host=&amp;#39;master_ip&amp;#39;,&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_user=&amp;#39;user&amp;#39;, &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_password=&amp;#39;123456&amp;#39;, &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_port=3306, &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_log_file=&amp;#39;mysql-bin.000006&amp;#39;, &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;&amp;gt; master_log_pos=98;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1 row in set (0.00 sec)&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; slave start;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;1 row in set (0.00 sec)&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;再次查看&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;slave&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;状态发现：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Slave_IO_Running: Yes&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Slave_SQL_Running: Yes&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;...&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;Seconds_Behind_Master: 0&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;解决办法&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;II&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; slave stop;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&amp;gt; slave start;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;解决办法&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;III&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;重新获取主库上的数据库相关物理文件，然后，再拷贝到从库的相应的位置。重复上述有关操作。&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;font&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: 宋体;"&gt;在启动从库机&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font&gt;mysql&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器时出现了，&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;启动&lt;/span&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;mysqld_safe&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;的时候遇到这个错误：&lt;/span&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;Fatal error: Can&amp;#39;t open and lock privilege tables: Table &amp;#39;mysql.host&amp;#39; doesn&amp;#39;t exist&lt;/span&gt;&lt;/div&gt;  &lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;将&lt;/span&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;data&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;删除之后&lt;/span&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;mysql_install_db --user=mysql&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;就行了&lt;br&gt; &lt;br&gt;摘自：&lt;a href="http://sqlnet.blog.51cto.com/343343/102980"&gt;http://sqlnet.blog.51cto.com/343343/102980&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1824860419815789383?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1824860419815789383/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1824860419815789383' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1824860419815789383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1824860419815789383'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/mysql5.html' title='Mysql5一主库两从库同步配置（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-5568516915413833970</id><published>2010-12-17T12:02:00.001+08:00</published><updated>2010-12-17T12:02:17.315+08:00</updated><title type='text'>MYSQL 主库与从库的建立 （转）</title><content type='html'>&lt;div id="app-share-content"&gt;  	                    &lt;p&gt;MySQL 版本：4.1&lt;/p&gt; &lt;p&gt;环境介绍：主库 192.168.0.205 从库 192.168.0.206&lt;/p&gt; &lt;p&gt;1、主库创建/etc/my.cnf，修改[mysqld]里边的键值增加 &lt;br&gt; server-id=1 &lt;br&gt; log-bin=binlog_name&lt;/p&gt; &lt;p&gt;2、主库增加用户，用于从库读取主库日志。 &lt;br&gt; grant replication slave,reload,super on *.* to &lt;a&gt;'slave'@'192.168.0.206'&lt;/a&gt; identified by '123456'&lt;/p&gt; &lt;p&gt;3、从库连接主库进行测试。 &lt;br&gt; /opt/mysql/bin/mysql -u slave -p -h 192.168.0.205&lt;/p&gt; &lt;p&gt;4、停从库，修改从库/etc/my.cnf，增加选项：&lt;/p&gt; &lt;table align="center" border="1" cellpadding="2" cellspacing="0" width="400"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td class="code" bgcolor="#e6e6e6"&gt;             &lt;pre&gt;[mysqld] &lt;br&gt;server-id=2 &lt;br&gt;master-host=192.168.0.205 &lt;br&gt;master-user=slave &lt;br&gt;master-password=123456&lt;/pre&gt;             &lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;5、启动从库，进行主从库数据同步&lt;/p&gt; &lt;p&gt;/opt/mysql/share/mysql/mysql start &lt;br&gt; /opt/mysql/bin/mysql -u root -p &lt;br&gt; mysql&amp;gt;load data from master; &lt;br&gt; 说明：这一步也可以用数据库倒入或者直接目录考过来。&lt;/p&gt; &lt;p&gt;6、进行测试：&lt;/p&gt; &lt;p&gt;主库创建表，&lt;/p&gt; &lt;table align="center" border="1" cellpadding="2" cellspacing="0" width="400"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td class="code" bgcolor="#e6e6e6"&gt;             &lt;pre&gt;mysql&amp;gt;create database sampdb; &lt;br&gt;mysql&amp;gt;create table new (name char(20),phone char(20)); &lt;br&gt;mysql&amp;gt;insert into new ('abc,'0532555555');&lt;/pre&gt;             &lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;打开从库，察看：&lt;/p&gt; &lt;table align="center" border="1" cellpadding="2" cellspacing="0" width="400"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td class="code" bgcolor="#e6e6e6"&gt;             &lt;pre&gt;/opt/mysql/bin/mysql -u root -p &lt;br&gt;mysql&amp;gt;show database; &lt;br&gt;mysql &lt;br&gt;sampdb &lt;br&gt;test &lt;br&gt;mysql&amp;gt;use sampdb; &lt;br&gt;mysql&amp;gt;show tables; &lt;br&gt;new &lt;br&gt;说明主从数据库创建成功。&lt;/pre&gt;             &lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;7、主从数据库相关命令：&lt;/p&gt; &lt;p&gt;slave stop; slave start ; 开始停止从数据库。 &lt;br&gt; show slave status\G; 显示从库正读取哪一个主数据库二进制日志 &lt;br&gt; purge master logs to 'binlog.000004'; 此命令非常小心，删除主数据库没用的二进制日志文件。如果误删除，那么从库就没有办法自动更新了。 &lt;br&gt; change master； 从服务器上修改参数使用。&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://apps.hi.baidu.com/share/detail/23068157"&gt;http://apps.hi.baidu.com/share/detail/23068157&lt;/a&gt;&lt;br&gt;&lt;/p&gt;             			&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-5568516915413833970?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/5568516915413833970/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=5568516915413833970' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5568516915413833970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5568516915413833970'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/mysql.html' title='MYSQL 主库与从库的建立 （转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-5361850415726231495</id><published>2010-12-15T15:01:00.001+08:00</published><updated>2010-12-15T15:01:50.030+08:00</updated><title type='text'>LBS的核心在于服务（转）</title><content type='html'>&lt;strong&gt;　LBS的核心在于服务&lt;/strong&gt; &lt;p&gt;　　LBS是基于位置的服务。很多想要投身到LBS大潮之中去的人或公司，都在研究，要如何利用好位置这个新加进来的技术。但是从语法上分析，基于位置的服务，其关键核心其实是服务，位置只是一种限定。&lt;/p&gt; &lt;p&gt;　　当前流行的POI模式的LBS，也就是信息点服务。其核心实际上是一种将线下资源结合地理信息之后，整合上线的过程。把存放有信息的位置点，标记在地图上。当用户走到这附近的时候，根据距离远近，查阅附近的信息。&lt;/p&gt; &lt;p&gt;　　对于发布信息和接受信息的双方来说，他们所需要的并不是这些信息，而是这些信息背后的服务。对于发布信息的人或机构来说，他们所发布的其实是&lt;a class="link_black" target="_blank" href="http://s.iresearch.cn/search.aspx?k=%E5%B9%BF%E5%91%8A"&gt;广告&lt;/a&gt;。 而对于接收这些信息的人们来说，他们所需要的是一种咨询服务。从广告中提取信息，并为用户提供咨询服务，这就是POI提供的服务。通过咨询服务，吸引用户 去周围的商家，进行消费，这也是POI提供的服务。国内的POI应用，在服务上还不够完善，只是完成了信息的传递和推送，顾问和吸引消费的能力还不是很 强。但是，这些服务商已经迫不及待的开始通过餐厅定位、商家排序，以及帮助商家删除有害信息等方式，开始吸收现金了。&lt;/p&gt; &lt;p&gt;　　现在很热的Check In模式，其本身是很难独立运作起来的。因为，Check  in的结果，其实是告诉别人，我"到此一游"。通常做这件事情的人，想要告诉的是两种人，第一是自己的朋友；第二是到达此地的陌生人。当然，如果是自己的 朋友能够到达此地的话，那就更好了。&lt;/p&gt; &lt;p&gt;　　但是喜欢四处去留下痕迹的人，毕竟不是很多，人类并不需要像某些动物那样通过随地小便来标记自己的领地。特别是在一片完全空白的领地里面（任何 Check In式的LBS应用，开始的时候都是一片空白），做这种标记实在是没什么意思啊。于是大部分Check  in方式的应用都结合了POI系统。也就是说，通过在信息点签到，来得到一些好处。&lt;/p&gt; &lt;p&gt;　　现在，大多数此类系统，为了能够快速的积累大量的用户和内容，对于签到限制得非常宽松。有些甚至可以允许我坐在办公室的电脑前，就到全世界任何 地方去签到。即使有些限制的，也只是能够拒绝在距离用户当前位置几公里范围之外的地方去签到，毕竟就像上文所说的那样，现在的LBS还存在很多技术缺陷。 签到限制太过宽松，就导致了签到的行为无法给POI上面那些提供服务的商家带来什么具体的收入。那么这些商家也自然就不会愿意将已经到手的利润分配给那些 不知所云的LBS服务商了。&lt;/p&gt; &lt;p&gt;　　交友服务，在中国可能很难开展，由于没有经济利益的驱动（有了经济利益驱动，恐怕就更麻烦了），所以这种东西很难发展起来，比Check In系统更难积累用户。&lt;/p&gt; &lt;p&gt;　　LBS的核心是服务，但是现在能够看到的那些LBS应用，其服务做得都不是那么让人满意。下面就让我们去分析一下，到底用户需要什么样的服务。LBS服务商又应该如何去满足这些需求，为用户提供服务呢？&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　享用服务的实体&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　在LBS中需要享受服务的实体，一共有三种。他们分别是商户、人和人们。下面，让我们来分析一下这些实体，以及他们需要什么样的服务。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　商家&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　商家最需要的服务，就是将周围的人吸引到自己这里来消费。这些商家都是有着固定的位置，他们希望知道谁从身边经过了，希望知道这些人是不是能够到自己这里来消费，并且希望能够尽量多的人，到他的店里面去消费尽量多的服务。&lt;/p&gt; &lt;p&gt;　　能够来看我的&lt;a class="link_black" target="_blank" href="http://web2.iresearch.cn/19"&gt;博客&lt;/a&gt;， 大多都应该进过电脑市场吧，现在的电脑市场里面到处游走着的都是拉生意的人。他们会拉住身边经过的每一个顾客，询问他们需要什么样的服务，如果这个顾客所 需要的服务，正好是自己所能够提供的，他们会很热心的把顾客拉到自己的柜台前。商家其实就是希望能够通过LBS服务，得到这样的效果。有些地方，甚至在移 动基站插播广告，向每一个进入这个移动基站覆盖范围内的手机用户发送广告短信。&lt;/p&gt; &lt;p&gt;　　更深一层来说，那些提供服务的商铺，他们总有高峰时段和低谷时段。高峰时段通常是需要排队的，那么这些商铺，肯定希望消费者能够错峰出来消费，或者是尽量压缩在高峰时间消费相同服务所需要的时间。这已经不再是LBS的范畴了，以后可以再在其他文章里面阐述。&lt;/p&gt; &lt;p&gt;　　最后，商家希望能够了解客户。哪些人经常在周围转悠，这些人都喜欢什么样的服务，他们在消费了一些服务之后，有什么感想。如何能够让这些人更多的到自己这里来消费？对于这方面的需求，目前的LBS服务商做得怎么样，还不得而知。&lt;/p&gt; &lt;p&gt;　　LBS实际上是为一个很小区域服务的，但是现在的LBS服务商都在努力的像&lt;a class="link_black" target="_blank" href="http://s.iresearch.cn/search.aspx?k=%E4%BA%92%E8%81%94%E7%BD%91"&gt;互联网&lt;/a&gt;企 业那样，为全世界服务，所以针对于每一个区域的服务，肯定就没法那么细致了。而为了搞到更多的在线用户，更多的点击，更多的POI信息，他们也不希望对用 户和区域进行过于精细的划分。本来用户就不多，再画上格子，那么分到每个格子里面的人，就越发少了。这是一个矛盾，因为只有将格子缩小，才能提供更加有针 对性的服务。&lt;/p&gt; &lt;p&gt;　　现在的POI系统里面充斥着各种广告信息，而其最大作用就是使用户能够看到拐角后面的招牌。拐角之前的招牌，用肉眼就可以看到了，POI系统的 作用就在于，拐角之后的那些商铺付一些钱，然后系统告诉用户，拐角后面还有更好的。这对于商铺来说，其实是一把双刃剑，系统既能将拐角另一边的用户吸引过 来，也有可能会把已经站在店铺门口的用户吸引走。只有一点是肯定的，不论是拐角哪一边的商铺都要向POI系统缴费。这其实是非常不公平的。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　个人&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　有些人是喜欢四处去以各种各样的形式去写"到此一游"的。比如我，我喜欢在旅行箱上贴标签。我坐飞机到任何地方，如果需要托运行李的话，机场就 会在我的行李箱上贴一个标签。再坐飞机，就再贴一个，逐渐积攒起来，就像很多勋章，标记着我走过的每一座城市。遗憾的是，后来机场的人再往上贴标签的时 候，因为害怕搬运工因为看错标签，导致行李装上错误的航班，而将以前的旧标签统统撕掉。实在是太遗憾了。这其实就是一种最原始的Check in系统。&lt;/p&gt; &lt;p&gt;　　人是一种社会性的生物，所以他们希望能够得到身边其他人的认可，希望能够在闲暇的时候，和其他什么人去聊一聊。就像我上面所说过的那样，我喜欢 向和我一样出入机场的那些旅人，炫耀行李箱上的那些标记着一个个城市的标签。很多人都喜欢炫耀一些什么，只是方式和方法不尽相同。很多人非常八卦，他们希 望能够了解身边的人或事物。特别是在无聊的时候，他们希望能够知道身边的人是不是也像他们一样无聊，是不是能够有个什么人和他聊一聊。这就是那种基于地理 位置的交友系统应该满足的东西了。&lt;/p&gt; &lt;p&gt;　　当一个人走到一个陌生地方的时候，他需要找到好吃的东西，好玩儿的东西。他所需要的其实并不是简单的了解身边的店铺信息。POI系统所提供的大多是一些赤裸裸的广告。来到陌生地点的用户，最需要的实际上应该是伴随式的导游服务，或者是咨询顾问式的服务。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　人群&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　具有一定相似性的人们，就是这里所要描述的人群了。这些人并不一定会聚集在一起，但是他们互相之间希望能够得到一些对方的信息。即使是聚集在一 起的人群，其中很多人也是孤单寂寞的，他们想找些人聊一聊，但又有些顾虑。顾虑在于两个方面，第一：找不到有共同语言的人；第二：害怕被拒绝。那些基于地 理位置的&lt;a class="link_black" target="_blank" href="http://web2.iresearch.cn/59"&gt;SNS&lt;/a&gt;，要做的就是这样一件事情，进行配对和筛选。从而解决前面的两个顾虑。&lt;/p&gt; &lt;p&gt;　　有些信息是我们希望了解的，比如我的朋友是不是来到了我所在的城市。我并不需要了解这位朋友具体住在哪家酒店，更不需要了解这位朋友是在旅店的 餐厅、客房或厕所里面。我只需要了解到我的朋友到了我的城市，那么就有机会去和他坐一坐、聊一聊。而对于我的朋友来说，他们也可以在要前往某个城市之前， 看看有谁在那里，然后提前准备一些礼物什么的。当我和朋友约好，要前去和他会合的时候，LBS系统就应该能够提供更加详细的地理位置信息。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　信息的流转&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　LBS提供服务的过程其实就是信息流转的过程，将合适的信息发送给合适的人。或者让人能够找到他们所需要的信息。&lt;/p&gt; &lt;p&gt;　　这两个过程的差异就在于，一个是主动的推送，一个则是自取。在现阶段，这两种方式都是非常普遍的。不同的应用模式，应该结合自己的需要，挑选其中的一种。这里面是不存在优劣之分的，关键在于是否合适。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　信息的过滤&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　信息流转的第一步是信息的过滤。并不是什么信息都可以发送的，也不是任何信息都可以接收的。&lt;/p&gt; &lt;p&gt;　　首先说发送信息的问题。商家肯定希望能够将尽可能多的信息推送到用户面前，但是又担心用户会感到讨厌。那么，就需要挑选更精要，更有吸引力的信息。这就存在了一个过滤的问题。&lt;/p&gt; &lt;p&gt;　　人在LBS系统中，如果无时无刻都把自己的精确坐标公布到网上，供全社会监督，这种情况光是想一想就会感到毛骨悚然的。但是，我们又希望能够向 其他人，熟人朋友或陌生人去宣告自己的到来。就像我以前做过的那样，在行李箱上贴机场托运标签那样。大部分人在大部分时间，并不会介意别人了解到他们身处 哪一个城市，或到达过哪一些城市。甚至会希望路过好友身边的时候，能够打个招呼。毕竟像古人那样乘兴而来败兴而归的故事，并不是经常发生的。所以个人的地 理位置信息，对于不同的人，不同的地点，不同的时间，不同的场景来说，其提供的精度是绝对不一样的。大多数时候，对于大多数地点，以及大多数查询者来说， 只是提供一个精确到城市的坐标就够了。但是，有的时候，特别是对于一些朋友来说，就可以提供更为精确的坐标。&lt;/p&gt; &lt;p&gt;　　这里有一个不能算是故事的故事来说明一下这个问题。在国外，两个中国人遇到一起，那么他们就是老乡了，因为他们来自同一个国家。但是，同样的问 题在国内发生，在一个陌生的城市，只有两个人来自同一个省，才能算是老乡。以此类推，到了一个省里面，只有来自同一个地区的人才是老乡；到了地区，老乡则 必须是从同一个县出来的；进了县城，老乡指的是同一个乡的；到了乡里，老乡就是从同一个村里出来的人。&lt;/p&gt; &lt;p&gt;　　很多人攀老乡的时候，也都是这么做的，首先问：你是哪个省的？如果和自己来自同一个省，再问对方是来自哪一个地市、县、乡、村。当然，如果哪一个层级出现了差异，则会停下来，然后开始计算在这一个级别的行政区划之间的距离和方向。&lt;/p&gt; &lt;p&gt;　　比如两个人在攀老乡，先确定大家的口音相近，那才能开始攀老乡。通常会先说：我听你说话像是山东（或者是其他的什么省）的吧。并通过这个过程展 示一下自己的纯正乡音，然后再问，我是临沂（市）的，你呢？对方可能回答也是临沂的；然后再说：我是苍山（县）的，这个时候对方的回答可能就是，我是沂南 （县）的，离你们那里还挺远的呢。&lt;/p&gt; &lt;p&gt;　　从这个过程中可以看出，这种沟通实在不断的尝试中逐步深入、逐步精确的。在确定了可以和对方精确到一个什么样的程度之后，信息可以精确到一个什 么样的程度就可以确认了。上面两个老乡之间可能会探讨他们所在的两个县之间的方向和距离，但是他们绝不会去研究两个人所处的村子是一个什么样的关系。不 过，这并不妨碍大家探讨一下村里寡妇门前的是是非非。这个时候，如果一个人说，我去过你们县的，那么话题才会继续围绕着他去过的那个位置再细化。&lt;/p&gt; &lt;p&gt;　　这个攀老乡的故事，就是现在的LBS+SNS的原始模型，遗憾的是能够将这个东西研究明白并应用起来的人并不多。这中间的关键在于信息过滤的颗粒度，如果两个陌生人凑到一起就开始互相说我是哪个村的，那估计天下就没有老乡遇老乡，两眼泪汪汪的故事了。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　地理位置信息的标记和隐私的保护&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　前面所说到的信息的过滤方式，就是信息发送或广播过程中，进行有效的隐私保护的方式。对地理位置信息的精细程度进行分级，是最简单的方法。对于 绝大多数人来说，当前的位置被标明为：在地球上，应该不算是泄漏个人隐私吧。那么进一步说，标明在哪个国家应该也问题不大，甚至我还希望能够将所有我去过 的国家都标记出来。绝大部分时间，我也不介意其他人是不是知道我到底是在上班，还是在家。单位的地址也是公开的。在家的话，别人只需要知道我在家就好了， 不需要知道我家的具体位置了，了解一个大概位置就好了。这样的话，有人走到我家附近，他不会直接到我家来敲门，但是可以给我打个电话，约我出去吃东西。这 就是一个度的把握了。如果我在单位上班，或者是在一个公共场所里面，那么就可以给出更详细的位置坐标。如果我需要和其他人约好了一起到什么地方汇合，那么 肯定就需要直接将最详尽的位置发过去。&lt;/p&gt; &lt;p&gt;　　对于得不到太多有价值服务的用户来说，强制他们去Check in实在是有些强人所难。&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://news.iresearch.cn/0200/20101116/127866.shtml"&gt;http://news.iresearch.cn/0200/20101116/127866.shtml&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-5361850415726231495?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/5361850415726231495/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=5361850415726231495' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5361850415726231495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5361850415726231495'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/lbs.html' title='LBS的核心在于服务（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-7546457352968584693</id><published>2010-12-13T17:20:00.001+08:00</published><updated>2010-12-13T17:20:06.354+08:00</updated><title type='text'>PHP中$_SERVER的详细参数与说明（转）</title><content type='html'>$_SERVER[&amp;#39;PHP_SELF&amp;#39;] #当前正在执行脚本的&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%CE%C4%BC%FE"&gt;文件&lt;/span&gt;名，与 document root相关。&lt;br&gt;$_SERVER[&amp;#39;argv&amp;#39;] #传递给该脚本的参数。&lt;br&gt;$_SERVER[&amp;#39;argc&amp;#39;] #包含传递给&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%B3%CC%D0%F2"&gt;程序&lt;/span&gt;的命令行参数的个数（如果运行在命令行模式）。&lt;br&gt; $_SERVER[&amp;#39;GATEWAY_INTERFACE&amp;#39;] #服务器使用的 CGI 规范的版本。例如，"CGI/1.1"。&lt;br&gt;$_SERVER[&amp;#39;SERVER_NAME&amp;#39;] #当前运行脚本所在服务器主机的名称。&lt;br&gt;$_SERVER[&amp;#39;SERVER_SOFTWARE&amp;#39;] #服务器标识的字串，在响应请求时的头部中给出。&lt;br&gt;$_SERVER[&amp;#39;SERVER_PROTOCOL&amp;#39;] #请求&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%D2%B3%C3%E6"&gt;页面&lt;/span&gt;时通信协议的名称和版本。例如，"HTTP/1.0"。&lt;br&gt; $_SERVER[&amp;#39;REQUEST_METHOD&amp;#39;] #&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%B7%C3%CE%CA"&gt;访问&lt;/span&gt;页面时的请求方法。例如："GET"、"HEAD"，"POST"，"PUT"。&lt;br&gt;$_SERVER[&amp;#39;QUERY_STRING&amp;#39;] #&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%B2%E9%D1%AF"&gt;查询&lt;/span&gt;(query)的&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%D7%D6%B7%FB"&gt;字符&lt;/span&gt;串。&lt;br&gt; $_SERVER[&amp;#39;DOCUMENT_ROOT&amp;#39;] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。&lt;br&gt;$_SERVER[&amp;#39;HTTP_ACCEPT&amp;#39;] #当前请求的 Accept: 头部的内容。&lt;br&gt;$_SERVER[&amp;#39;HTTP_ACCEPT_CHARSET&amp;#39;] #当前请求的 Accept-Charset: 头部的内容。例如："iso-8859-1,*,utf-8"。&lt;br&gt;$_SERVER[&amp;#39;HTTP_ACCEPT_ENCODING&amp;#39;] #当前请求的 Accept-Encoding: 头部的内容。例如："gzip"。&lt;br&gt; $_SERVER[&amp;#39;HTTP_ACCEPT_LANGUAGE&amp;#39;]#当前请求的 Accept-Language: 头部的内容。例如："en"。&lt;br&gt;$_SERVER[&amp;#39;HTTP_CONNECTION&amp;#39;] #当前请求的 Connection: 头部的内容。例如："Keep-Alive"。&lt;br&gt;$_SERVER[&amp;#39;HTTP_HOST&amp;#39;] #当前请求的 Host: 头部的内容。&lt;br&gt;$_SERVER[&amp;#39;HTTP_REFERER&amp;#39;] #链接到当前页面的前一页面的 URL 地址。&lt;br&gt; $_SERVER[&amp;#39;HTTP_USER_AGENT&amp;#39;] #当前请求的 User_Agent: 头部的内容。&lt;br&gt;$_SERVER[&amp;#39;HTTPS&amp;#39;] ― 如果通过https访问,则被设为一个非空的值(on)，否则返回off&lt;br&gt;$_SERVER[&amp;#39;REMOTE_ADDR&amp;#39;] #正在浏览当前页面用户的 IP 地址。&lt;br&gt;$_SERVER[&amp;#39;REMOTE_HOST&amp;#39;] #正在浏览当前页面用户的主机名。&lt;br&gt; $_SERVER[&amp;#39;REMOTE_PORT&amp;#39;] #用户连接到服务器时所使用的端口。&lt;br&gt;$_SERVER[&amp;#39;SCRIPT_FILENAME&amp;#39;] #当前执行脚本的绝对路径名。&lt;br&gt;$_SERVER[&amp;#39;SERVER_ADMIN&amp;#39;] #管理员信息&lt;br&gt;$_SERVER[&amp;#39;SERVER_PORT&amp;#39;] #服务器所使用的端口&lt;br&gt;$_SERVER[&amp;#39;SERVER_SIGNATURE&amp;#39;] #包含服务器版本和虚拟主机名的字符串。&lt;br&gt; $_SERVER[&amp;#39;PATH_TRANSLATED&amp;#39;] #当前脚本所在文件&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=%CF%B5%CD%B3"&gt;系统&lt;/span&gt;（不是文档根目录）的基本路径。&lt;br&gt;$_SERVER[&amp;#39;SCRIPT_NAME&amp;#39;] #包含当前脚本的路径。这在页面需要指向自己时非常有用。&lt;br&gt; $_SERVER[&amp;#39;REQUEST_URI&amp;#39;] #访问此页面所需的 URI。例如，"/index.&lt;span class="t_tag" href="http://www.chinaz.com/Program/PHP/tag.php?name=html"&gt;html&lt;/span&gt;"。&lt;br&gt;$_SERVER[&amp;#39;PHP_AUTH_USER&amp;#39;] #当 PHP 运行在 Apache 模块方式下，并且正在使用 HTTP 认证功能，这个变量便是用户输入的用户名。&lt;br&gt; $_SERVER[&amp;#39;PHP_AUTH_PW&amp;#39;] #当 PHP 运行在 Apache 模块方式下，并且正在使用 HTTP 认证功能，这个变量便是用户输入的密码。&lt;br&gt;$_SERVER[&amp;#39;AUTH_TYPE&amp;#39;] #当 PHP 运行在 Apache 模块方式下，并且正在使用 HTTP 认证功能，这个变量便是认证的类型。&lt;br&gt;&lt;br&gt;摘自：&lt;a href="http://www.chinaz.com/Program/PHP/01291053F2010.html"&gt;http://www.chinaz.com/Program/PHP/01291053F2010.html&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-7546457352968584693?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/7546457352968584693/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=7546457352968584693' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/7546457352968584693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/7546457352968584693'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/phpserver.html' title='PHP中$_SERVER的详细参数与说明（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1087521721047069350</id><published>2010-12-13T15:39:00.001+08:00</published><updated>2010-12-13T15:39:29.396+08:00</updated><title type='text'>Thinkphp常用配置（转）</title><content type='html'>摘自：&lt;a href="http://hi.baidu.com/a00514/blog/item/6485ff5509849b58574e002f.html"&gt;http://hi.baidu.com/a00514/blog/item/6485ff5509849b58574e002f.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;CHECK_FILE_CASE -- windows环境下面的严格检查大小写。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 项目设定 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_DEBUG&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false, // 是否开启调试模式&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_DOMAIN_DEPLOY&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 是否使用独立域名部署项目&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_PLUGIN_ON&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 是否开启插件机制&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_FILE_CASE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 是否检查文件的大小写 对Windows平台有效&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_GROUP_DEPR&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;.&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 模块分组之间的分割符&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_GROUP_LIST&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 项目分组设定,多个组之间用逗号分隔,例如&amp;#39;Home,Admin&amp;#39;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_AUTOLOAD_REG&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 是否开启SPL_AUTOLOAD_REGISTER&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_AUTOLOAD_PATH&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;Think.Util.&amp;#39;,// __autoLoad 机制额外检测路径设置,注意搜索顺序&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;APP_CONFIG_LIST&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt;  array(&amp;#39;taglibs&amp;#39;,&amp;#39;routes&amp;#39;,&amp;#39;tags&amp;#39;,&amp;#39;htmls&amp;#39;,&amp;#39;modules&amp;#39;,&amp;#39;actions&amp;#39;),//  项目额外需要加载的配置列表，默认包括：taglibs(标签库定义),routes(路由定义),tags(标签定义),(htmls)静态缓存定义,  modules(扩展模块),actions(扩展操作)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* Cookie设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;COOKIE_EXPIRE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 3600,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Coodie有效期&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;COOKIE_DOMAIN&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Cookie有效域名&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;COOKIE_PATH&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;/&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Cookie路径&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;COOKIE_PREFIX&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Cookie前缀 避免冲突&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 默认设定 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_APP&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &lt;a&gt;&amp;#39;@&amp;#39;&lt;/a&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认项目名称，@表示当前项目&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_GROUP&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;Home&amp;#39;,  // 默认分组&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_MODULE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;Index&amp;#39;, // 默认模块名称&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_ACTION&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;index&amp;#39;, // 默认操作名称&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_CHARSET&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;utf-8&amp;#39;, // 默认输出编码&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_TIMEZONE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;PRC&amp;#39;, // 默认时区&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_AJAX_RETURN&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;JSON&amp;#39;,  // 默认AJAX 数据返回格式,可选JSON XML ...&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_THEME&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;default&amp;#39;, // 默认模板主题名称&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DEFAULT_LANG&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;zh-cn&amp;#39;, // 默认语言&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 数据库设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_TYPE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;mysql&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库类型&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_HOST&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;localhost&amp;#39;, // 服务器地址&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_NAME&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库名&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_USER&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;root&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 用户名&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_PWD&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 密码&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_PORT&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 3306,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 端口&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DB_PREFIX&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;think_&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库表前缀&lt;br&gt; &amp;nbsp;&amp;nbsp;   &amp;#39;DB_SUFFIX&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库表后缀&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_FIELDTYPE_CHECK&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 是否进行字段类型检查&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_FIELDS_CACHE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 启用字段缓存&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_CHARSET&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;utf8&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库编码默认采用utf8&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_DEPLOY_TYPE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DB_RW_SEPARATE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据库读写是否分离 主从式有效&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 数据缓存设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_TIME&amp;#39;  =&amp;gt; -1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 数据缓存有效期&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_COMPRESS&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 数据缓存是否压缩缓存&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_CHECK&amp;#39;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 数据缓存是否校验缓存&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_TYPE&amp;#39;  =&amp;gt; &amp;#39;File&amp;#39;,  // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite| Xcache|Apachenote|Eaccelerator&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_PATH&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_CACHE_SUBDIR&amp;#39;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 使用子目录缓存 (自动根据缓存标识的哈希创建子目录)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;DATA_PATH_LEVEL&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 子目录缓存级别&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 错误设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;ERROR_MESSAGE&amp;#39; =&amp;gt; &amp;#39;您浏览的页面暂时发生了错误！请稍后再试～&amp;#39;,//错误显示信息,非调试模式有效&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;ERROR_PAGE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;, // 错误定向页面&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 静态缓存设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;HTML_CACHE_ON&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 默认关闭静态缓存&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;HTML_CACHE_TIME&amp;#39;  =&amp;gt; 60,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 静态缓存有效期&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;HTML_READ_TYPE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 静态缓存读取方式 0 readfile 1 redirect&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;HTML_FILE_SUFFIX&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;.shtml&amp;#39;,// 默认静态文件后缀&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 语言设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;LANG_SWITCH_ON&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 默认关闭多语言包功能&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;LANG_AUTO_DETECT&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true,&amp;nbsp;&amp;nbsp;  // 自动侦测语言 开启多语言功能后有效&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 日志设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;LOG_RECORD&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 默认不记录日志&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;LOG_FILE_SIZE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 2097152, // 日志文件大小限制&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;LOG_RECORD_LEVEL&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; array(&amp;#39;EMERG&amp;#39;,&amp;#39;ALERT&amp;#39;,&amp;#39;CRIT&amp;#39;,&amp;#39;ERR&amp;#39;),// 允许记录的日志级别&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 分页设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;   &amp;#39;PAGE_ROLLPAGE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 5,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 分页显示页数&lt;br&gt; &amp;nbsp;&amp;nbsp;   &amp;#39;PAGE_LISTROWS&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 20,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 分页每页显示记录数&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* SESSION设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SESSION_AUTO_START&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 是否自动开启Session&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // 内置SESSION类可用参数&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //&amp;#39;SESSION_NAME&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Session名称&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //&amp;#39;SESSION_PATH&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Session保存路径&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //&amp;#39;SESSION_CALLBACK&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // Session 对象反序列化时候的回调函数&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 运行时间设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_RUN_TIME&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 运行时间显示&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_ADV_TIME&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 显示详细的运行时间&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_DB_TIMES&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 显示数据库查询和写入次数&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_CACHE_TIMES&amp;#39;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 显示缓存操作次数&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_USE_MEM&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 显示内存开销&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_PAGE_TRACE&amp;#39;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 显示页面Trace信息 由Trace文件定义和Action操作赋值&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;SHOW_ERROR_MSG&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 显示错误信息&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 模板引擎设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_ENGINE_TYPE&amp;#39;  =&amp;gt; &amp;#39;Think&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认模板引擎 以下设置仅对使用Think模板引擎有效&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_DETECT_THEME&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 自动侦测模板主题&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_TEMPLATE_SUFFIX&amp;#39;  =&amp;gt; &amp;#39;.html&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认模板文件后缀&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_CACHFILE_SUFFIX&amp;#39;  =&amp;gt; &amp;#39;.php&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认模板缓存后缀&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_DENY_FUNC_LIST&amp;#39; =&amp;gt; &amp;#39;echo,exit&amp;#39;, // 模板引擎禁用函数&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_PARSE_STRING&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 模板引擎要自动替换的字符串，必须是数组形式。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_L_DELIM&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;{&amp;#39;,&amp;nbsp;&amp;nbsp;  // 模板引擎普通标签开始标记&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_R_DELIM&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;}&amp;#39;,&amp;nbsp;&amp;nbsp;  // 模板引擎普通标签结束标记&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_VAR_IDENTIFY&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;array&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 模板变量识别。留空自动判断,参数为&amp;#39;obj&amp;#39;则表示对象&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_STRIP_SPACE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 是否去除模板文件里面的html空格与换行&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_CACHE_ON&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; true,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 是否开启模板编译缓存,设为false则每次都会重新编译&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_CACHE_TIME&amp;#39;  =&amp;gt; -1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 模板缓存有效期 -1 为永久，(以数字为值，单位:秒)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_ACTION_ERROR&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;Public:success&amp;#39;, // 默认错误跳转对应的模板文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_ACTION_SUCCESS&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;Public:success&amp;#39;, // 默认成功跳转对应的模板文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_TRACE_FILE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; THINK_PATH.&amp;#39;/Tpl/PageTrace.tpl.php&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 页面Trace的模板文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_EXCEPTION_FILE&amp;#39;&amp;nbsp;&amp;nbsp;  =&amp;gt; THINK_PATH.&amp;#39;/Tpl/ThinkException.tpl.php&amp;#39;,// 异常页面的模板文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TMPL_FILE_DEPR&amp;#39;=&amp;gt;&amp;#39;/&amp;#39;, //模板文件MODULE_NAME与ACTION_NAME之间的分割符，只对项目分组部署有效&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // Think模板引擎标签库相关设定&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAGLIB_BEGIN&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;lt;&amp;#39;,  // 标签库标签开始标记&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAGLIB_END&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;gt;&amp;#39;,  // 标签库标签结束标记&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAGLIB_LOAD&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true, // 是否使用内置标签库之外的其它标签库，默认自动检测&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAGLIB_BUILD_IN&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;cx&amp;#39;, // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAGLIB_PRE_LOAD&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;  // 需要额外加载的标签库(须指定标签库名称)，多个以逗号分隔&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAG_NESTED_LEVEL&amp;#39;  =&amp;gt; 3,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 标签嵌套级别&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TAG_EXTEND_PARSE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,&amp;nbsp;&amp;nbsp;  // 指定对普通标签进行扩展定义和解析的函数名称。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 表单令牌验证 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TOKEN_ON&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt;&amp;nbsp;&amp;nbsp;  true,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 开启令牌验证&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TOKEN_NAME&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt;&amp;nbsp;&amp;nbsp;  &amp;#39;__hash__&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 令牌验证的表单隐藏字段名称&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;TOKEN_TYPE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;md5&amp;#39;,&amp;nbsp;&amp;nbsp;  // 令牌验证哈希规则&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* URL设置 */&lt;br&gt;  &amp;#39;URL_CASE_INSENSITIVE&amp;#39;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // URL地址是否不区分大小写&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_ROUTER_ON&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; false,&amp;nbsp;&amp;nbsp;  // 是否开启URL路由&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_DISPATCH_ON&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; true, // 是否启用Dispatcher&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_MODEL&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // URL访问模式,可选参数0、1、2、3,代表以下四种模式：&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式) 当URL_DISPATCH_ON开启后有效; 默认为PATHINFO 模式，提供最好的用户体验和SEO支持&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_PATHINFO_MODEL&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; 2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // PATHINFO 模式,使用数字1、2、3代表以下三种模式:&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // 1 普通模式(参数没有顺序,例如/m/module/a/action/id/1);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // 2 智能模式(系统默认使用的模式，可自动识别模块和操作/module/action/id/1/ 或者 /module,action,id,1/...);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  // 3 兼容模式(通过一个GET变量将PATHINFO传递给dispather，默认为s index.php?s=/module/action/id/1)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_PATHINFO_DEPR&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;/&amp;#39;, // PATHINFO模式下，各参数之间的分割符号&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;URL_HTML_SUFFIX&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;&amp;#39;,  // URL伪静态后缀设置&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /* 系统变量名称设置 */&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_GROUP&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;g&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认分组获取变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_MODULE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;m&amp;#39;,  // 默认模块获取变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_ACTION&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;a&amp;#39;,  // 默认操作获取变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_ROUTER&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;r&amp;#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 默认路由获取变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_PAGE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;p&amp;#39;,  // 默认分页跳转变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_TEMPLATE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;t&amp;#39;,  // 默认模板切换变量&lt;br&gt;  &amp;#39;VAR_LANGUAGE&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;l&amp;#39;,  // 默认语言切换变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_AJAX_SUBMIT&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;ajax&amp;#39;,  // 默认的AJAX提交变量&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;#39;VAR_PATHINFO&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  =&amp;gt; &amp;#39;s&amp;#39;, // PATHINFO 兼容模式获取变量例如  ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_MODEL 和 URL_PATHINFO_DEPR&lt;/p&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1087521721047069350?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1087521721047069350/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1087521721047069350' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1087521721047069350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1087521721047069350'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/thinkphp.html' title='Thinkphp常用配置（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1813823301092547253</id><published>2010-12-12T19:11:00.001+08:00</published><updated>2010-12-12T19:11:37.089+08:00</updated><title type='text'>为什么没有Tp怎么连接SQLite数据库？？？（转）</title><content type='html'>&lt;div id="comment_0" class="comment"&gt; &lt;font style="color: rgb(0, 0, 0);" size="2"&gt;&lt;strong&gt;摘自：&lt;a href="http://www.phpfans.net/ask/MTIzOTk2OA.html"&gt;http://www.phpfans.net/ask/MTIzOTk2OA.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;我非常喜欢thinkphp，但是刚开始学习thinkphp，有些地方还不太熟，请高人指点！&lt;br&gt; 最好能给个例子！&lt;br&gt;  &lt;br&gt; 谢谢！！&lt;br&gt;------&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;div style="margin-top: 5px;"&gt;   &lt;/div&gt;     &lt;div class="bottom"&gt;昵称: mayi993 &amp;nbsp;时间: 2009-12-17 17:36:00&lt;/div&gt;             &lt;/div&gt;   &lt;div id="comment_1" class="comment"&gt; 官方不可能给每个数据库驱动给出代码示例，具体在使用的时候有什么错误提示可以明确提出。    &lt;div class="bottom"&gt;昵称: thinkphp &amp;nbsp;时间: 2009-12-17 23:31:00&lt;/div&gt;             &lt;/div&gt;   &lt;div id="comment_2" class="comment"&gt; 我是用TP连接SQLite数据库，数据库里的内容读出来了，但是在网页的最下面出现一个错误，&lt;br&gt; Fatal error: Exception thrown without a stack frame in Unknown on line 0&lt;br&gt; ------------&lt;br&gt; 不知道怎么解决？？？    &lt;div class="bottom"&gt;昵称: mayi993 &amp;nbsp;时间: 2009-12-18 09:17:00&lt;/div&gt;              &lt;/div&gt;   &lt;div id="comment_3" class="comment"&gt; 配置&lt;br&gt; return array(&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;#39;DB_TYPE&amp;#39;=&amp;gt;&amp;#39;sqlite&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#39;DB_NAME&amp;#39;=&amp;gt;&amp;#39;Mayi_db/CMS.sdb&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#39;DB_PREFIX&amp;#39;=&amp;gt;&amp;#39;CMS_&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;br&gt; &lt;br&gt; 读取&lt;br&gt; $test=M(&amp;#39;Admin&amp;#39;);&lt;br&gt;  $list1=$test-&amp;gt;findAll();&lt;br&gt; dump($list1);&lt;br&gt; &lt;br&gt; &lt;br&gt; 模型&lt;br&gt; class AdminModel extends Model{&lt;br&gt; &lt;br&gt; &amp;nbsp; &amp;nbsp; function AdminModel() {&lt;br&gt; &amp;nbsp; &amp;nbsp; }&lt;br&gt; }&lt;br&gt; &lt;br&gt; -------------------------&lt;br&gt; 请高手指点！！！！！&lt;div style="margin-top: 5px;"&gt;   &lt;div style="display: none;"&gt;-&lt;/div&gt; &lt;/div&gt;     &lt;div class="bottom"&gt;昵称: mayi993 &amp;nbsp;时间: 2009-12-18 09:20:00&lt;/div&gt;             &lt;/div&gt;   &lt;div id="comment_4" class="comment"&gt; config.php中sqlite参数如下：&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_TYPE&amp;#39;=&amp;gt;&amp;#39;sqlite&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_NAME&amp;#39; =&amp;gt; &amp;#39;demo2.sqlite&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_PREFIX&amp;#39;=&amp;gt;&amp;#39;&amp;#39;,&lt;br&gt; -----------------------&lt;br&gt; Fatal error: Exception thrown without a stack frame in Unknown&amp;nbsp;&amp;nbsp;on line 0&lt;br&gt;  上面错误出现，是由于DBsqlite.class.php中的public function close这个函数的原因，sqlite_close（）方法没有返回值，所以，无论数据库连接是否关闭，if中的报错都会执行。&lt;br&gt; 将if中sqlit_close()前的叹号去掉就可以了。当然，也可注释掉if中的报错code    &lt;div class="bottom"&gt;昵称: garnono &amp;nbsp;时间: 2010-11-17 17:04:00&lt;/div&gt;              &lt;/div&gt;   &lt;div id="comment_5" class="comment"&gt; config.php中sqlite参数如下：&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_TYPE&amp;#39;=&amp;gt;&amp;#39;sqlite&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_NAME&amp;#39; =&amp;gt; &amp;#39;demo2.sqlite&amp;#39;,&lt;br&gt; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;DB_PREFIX&amp;#39;=&amp;gt;&amp;#39;&amp;#39;,&lt;br&gt; -------------------&lt;br&gt; Fatal error: Exception thrown without a stack frame in Unknown&amp;nbsp;&amp;nbsp;on line 0&lt;br&gt;  上面错误出现，是由于DBsqlite.class.php中的public function close这个函数的原因，sqlite_close（）方法没有返回值，所以，无论数据库连接是否关闭，if中的报错都会执行。&lt;br&gt; 将if中sqlit_close()前的叹号去掉就可以了。当然，也可注释掉if中的报错code    &lt;div class="bottom"&gt;昵称: garnono &amp;nbsp;时间: 2010-11-17 17:04:00&lt;/div&gt;              &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1813823301092547253?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1813823301092547253/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1813823301092547253' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1813823301092547253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1813823301092547253'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/tpsqlite.html' title='为什么没有Tp怎么连接SQLite数据库？？？（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1842061200715707037</id><published>2010-12-12T13:02:00.001+08:00</published><updated>2010-12-12T13:02:01.726+08:00</updated><title type='text'>flex中将图片保存成xml文件存入本地（转）</title><content type='html'>我们知道Flex对于本地的限制比AIR要大，当我们想保存一个由Flex生成的文件必须借由服务器来完成，现在有一个需求就是，用户想保存Flex生成 的图片在本地，我们要完成这个过程，必须先将Flex生成的图片转换为通用的数据格式，即ByteArray，然后由后台程序帮助写文件，形式上类似先上 传，再下载，只不过中间不用保存实际的物理文件。&lt;br&gt; 源码的编辑：&lt;br&gt; &lt;div class="blockcode"&gt;&lt;div id="code0"&gt;&lt;ol&gt;&lt;li&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href="http://www.adobe.com/2006/mxml"&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; layout=&amp;quot;absolute&amp;quot;&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;mx:Script&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;![CDATA[&lt;br&gt; &lt;/li&gt;&lt;li&gt;import mx.graphics.codec.JPEGEncoder;&lt;br&gt; &lt;/li&gt;&lt;li&gt;import mx.graphics.ImageSnapshot;&lt;br&gt; &lt;/li&gt;&lt;li&gt;private function saveAs(){&lt;br&gt; &lt;/li&gt;&lt;li&gt;var en:JPEGEncoder = new JPEGEncoder(100); //压缩图片，100是指质量&lt;br&gt; &lt;/li&gt;&lt;li&gt;var ba:ByteArray=en.encode(ImageSnapshot.captureBitmapData(img));//将控件转为BitmapData后再转为ByteArray&lt;br&gt; &lt;/li&gt;&lt;li&gt;var request:URLRequest = new URLRequest(&amp;quot;/TestForLCDS/servlet/UploadServlet&amp;quot;);&lt;br&gt; &lt;/li&gt;&lt;li&gt;request.method=&amp;quot;POST&amp;quot;;&lt;br&gt; &lt;/li&gt;&lt;li&gt;request.data=ba;&lt;br&gt; &lt;/li&gt;&lt;li&gt;request.contentType = &amp;quot;application/octet-stream&amp;quot;; //这个很重要，设置成流数据&lt;br&gt; &lt;/li&gt;&lt;li&gt;navigateToURL(request,&amp;quot;_blank&amp;quot;); //因为要浏览器触发下载事件，所以就不用异步方式打开连接了&lt;br&gt; &lt;/li&gt;&lt;li&gt;}&lt;br&gt; &lt;/li&gt;&lt;li&gt;]]&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;/mx:Script&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;mx:Button x=&amp;quot;228&amp;quot; y=&amp;quot;10&amp;quot; label=&amp;quot;另存为本地图片&amp;quot; click=&amp;quot;saveAs()&amp;quot;/&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;mx:Image id=&amp;quot;img&amp;quot; x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; source=&amp;quot;img.jpg&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot; scaleContent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;&amp;lt;/mx:Application&amp;gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;em&gt;&lt;/em&gt;&lt;/div&gt;&lt;br&gt; 后台java&lt;br&gt; &lt;div id="code1"&gt;&lt;ol&gt;&lt;li&gt;public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt; &lt;/li&gt;&lt;li&gt;throws ServletException, IOException {&lt;br&gt; &lt;/li&gt;&lt;li&gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;response.setContentType(&amp;quot;application/x-download&amp;quot;); //内容是下载&lt;br&gt; &lt;/li&gt;&lt;li&gt;response.setHeader(&amp;quot;Content-Disposition&amp;quot;,&amp;quot;attachment;filename=&amp;quot; + &amp;quot;test.jpg&amp;quot;);//文件名，可以进一步处理&lt;br&gt; &lt;/li&gt;&lt;li&gt;//读数据&lt;br&gt; &lt;/li&gt;&lt;li&gt;BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream()); &lt;br&gt; &lt;/li&gt;&lt;li&gt;OutputStream outputStream = response.getOutputStream();&lt;br&gt; &lt;/li&gt;&lt;li&gt;byte [] bytes = new byte[1024]; &lt;br&gt; &lt;/li&gt;&lt;li&gt;int v; &lt;br&gt; &lt;/li&gt;&lt;li&gt;//写数据&lt;br&gt; &lt;/li&gt;&lt;li&gt;while((v=inputStream.read(bytes))&amp;gt;0){ &lt;br&gt; &lt;/li&gt;&lt;li&gt;outputStream.write(bytes,0,v); &lt;br&gt; &lt;/li&gt;&lt;li&gt;} &lt;br&gt; &lt;/li&gt;&lt;li&gt;outputStream.flush();&lt;br&gt; &lt;/li&gt;&lt;li&gt;outputStream.close();&lt;br&gt; &lt;/li&gt;&lt;li&gt;inputStream.close(); &lt;br&gt; &lt;/li&gt;&lt;li&gt;}&lt;br&gt; &lt;/li&gt;&lt;li&gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;摘自：&lt;a href="http://www.eb163.com/club/forum.php?mod=viewthread&amp;amp;tid=4165&amp;amp;page=1"&gt;http://www.eb163.com/club/forum.php?mod=viewthread&amp;amp;tid=4165&amp;amp;page=1&lt;/a&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1842061200715707037?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1842061200715707037/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1842061200715707037' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1842061200715707037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1842061200715707037'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/flexxml.html' title='flex中将图片保存成xml文件存入本地（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-4842945422701681612</id><published>2010-12-12T13:00:00.000+08:00</published><updated>2010-12-12T13:01:39.532+08:00</updated><title type='text'>php读取二进制文件流生成图片（转）</title><content type='html'>&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Php代码 &lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-c" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="vars"&gt;$imgString&lt;/span&gt;&lt;span&gt;为二进制文件流&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="vars"&gt;$file_dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;test.jpg&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class="vars"&gt;$fp&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="func"&gt;fopen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class="vars"&gt;$file_dir&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span&gt;)){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(fwrite(&lt;/span&gt;&lt;span class="vars"&gt;$fp&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class="vars"&gt;$img&lt;/span&gt;&lt;span&gt;)){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fclose(&lt;span class="vars"&gt;$fp&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp; &lt;br&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;摘自：&lt;a href="http://lhx1026.javaeye.com/blog/503262"&gt;http://lhx1026.javaeye.com/blog/503262&lt;/a&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-4842945422701681612?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/4842945422701681612/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=4842945422701681612' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4842945422701681612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4842945422701681612'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/php_12.html' title='php读取二进制文件流生成图片（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-4317340278050330235</id><published>2010-12-12T12:59:00.001+08:00</published><updated>2010-12-12T12:59:48.827+08:00</updated><title type='text'>flex图片剪切示例--预览、保存到本地、保存到服务器(附源码)（转）</title><content type='html'>图片剪切功能：&lt;br&gt; &lt;br&gt; 效果图：&lt;br&gt; &lt;img style="width: 325px; height: 261px;" alt="" src="http://www.blogjava.net/images/blogjava_net/obpm/3sfs.png" border="0" height="261" width="325"&gt;&lt;br&gt; &lt;br&gt; &lt;img alt="" src="http://www.blogjava.net/images/blogjava_net/obpm/2sfsf.png" border="0"&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; flex代码:&lt;br&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Application&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;&lt;a href="http://www.adobe.com/2006/mxml"&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;layout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;absolute&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;initialize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;init()&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;xmlns:local&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;astion.*&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.controls.Image;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.graphics.ImageSnapshot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;flash.net.FileReference;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.graphics.codec.JPEGEncoder;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.managers.PopUpManager;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.containers.TitleWindow;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.controls.Alert;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.events.CloseEvent;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.core.IFlexDisplayObject;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.utils.*;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;mx.core.Application;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;astion.Dot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;import&amp;nbsp;astion.ScaleBox;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;const&amp;nbsp;LINE_WIDTH:Number&amp;nbsp;=&amp;nbsp;1;//缩放边框宽度&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;file:FileReference;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;var&amp;nbsp;IMAGE_URL:String=&amp;quot;&lt;a href="http://localhost:8080/cutPicuter/aa/aa.jpg"&gt;http://localhost:8080/cutPicuter/aa/aa.jpg&lt;/a&gt;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;loader:Loader;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;bmp:Bitmap;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;var&amp;nbsp;stream:URLStream;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;var&amp;nbsp;realPath:String=&amp;quot;D:\myWorkSpace\cutPicuter\WebRoot\aa\aa.jpg&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//初始化数据&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;init():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.loader&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Loader();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stream&amp;nbsp;=&amp;nbsp;new&amp;nbsp;URLStream();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onComplete);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.loader.load(new&amp;nbsp;URLRequest(encodeURI(this.IMAGE_URL)));//解决中文乱码&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stream.load(new&amp;nbsp;URLRequest(encodeURI(this.IMAGE_URL)));&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stream.addEventListener(Event.COMPLETE,this.onLoaded);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;onLoaded(e:Event):void&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;bytearray:ByteArray&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ByteArray();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stream.readBytes(bytearray);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(this.stream.connected)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stream.close();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.loader.loadBytes(bytearray);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;onComplete(e:Event):void&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.bmp&amp;nbsp;=&amp;nbsp;this.loader.content&amp;nbsp;as&amp;nbsp;Bitmap;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;showImage:Image=&amp;nbsp;new&amp;nbsp;Image();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showImage.source=this.loader.content;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.addChild(showImage);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.setChildIndex(box,1);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.setChildIndex(showImage,0);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch(e:Error)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//截图，显示缩放选择框&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;doCapture():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box.x&amp;nbsp;=&amp;nbsp;100;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box.y&amp;nbsp;=&amp;nbsp;100;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box.visible&amp;nbsp;=&amp;nbsp;true;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//获取缩放选择框内的图像&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;getImg():BitmapData{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//截取整个区域&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box.scaleEnable&amp;nbsp;=&amp;nbsp;false;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;bmp:BitmapData&amp;nbsp;=&amp;nbsp;ImageSnapshot.captureBitmapData(canvas);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;box.scaleEnable&amp;nbsp;=&amp;nbsp;true;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//矩形为要截取区域&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;re:Rectangle&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Rectangle(box.x+LINE_WIDTH,box.y+LINE_WIDTH,box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH);&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;bytearray:ByteArray&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ByteArray();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//截取出所选区域的像素集合&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytearray&amp;nbsp;=&amp;nbsp;bmp.getPixels(re);&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;imgBD:BitmapData&amp;nbsp;=&amp;nbsp;new&amp;nbsp;BitmapData(box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//当前的bytearray.position为最大长度，要设为从0开始读取&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytearray.position=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;fillre:Rectangle&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Rectangle(0,0,box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//将截取出的像素集合存在新的bitmapdata里，大小和截取区域一样&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imgBD.setPixels(fillre,bytearray);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;imgBD;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//预览图片&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;doScan():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;t:TitleWindow&amp;nbsp;=&amp;nbsp;new&amp;nbsp;TitleWindow();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.showCloseButton=true;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.addEventListener(CloseEvent.CLOSE,closeWindow);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.width&amp;nbsp;=&amp;nbsp;box.boxWidth+t.getStyle(&amp;quot;borderThickness&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.height&amp;nbsp;=box.boxHeight+t.getStyle(&amp;quot;borderThickness&amp;quot;)+t.getStyle(&amp;quot;headerHeight&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;img:Image&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Image();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;img.width&amp;nbsp;=&amp;nbsp;box.boxWidth;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;img.height&amp;nbsp;=&amp;nbsp;box.boxHeight;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;img.source&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Bitmap(getImg());&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.addChild(img);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PopUpManager.addPopUp(t,this,true);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PopUpManager.centerPopUp(t);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;closeWindow(e:CloseEvent):void{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;t:TitleWindow&amp;nbsp;=&amp;nbsp;e.currentTarget&amp;nbsp;as&amp;nbsp;TitleWindow;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PopUpManager.removePopUp(t);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//保存图片到本地&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;downloadPicture():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file=new&amp;nbsp;FileReference();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file.addEventListener(Event.COMPLETE,downloadComplete);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file.save(new&amp;nbsp;JPEGEncoder(80).encode(getImg()),&amp;quot;default.jpg&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;downloadComplete(event:Event):void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;quot;成功保存图片到本地！&amp;quot;,&amp;quot;提示&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//保存图片到服务器即覆盖原来的图片&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;save():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;quot;是否保存剪切图片？&amp;quot;,&amp;quot;提示&amp;quot;,3,&amp;nbsp;this,&amp;nbsp;function(event:CloseEvent):void&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(event.detail==Alert.YES){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;request:URLRequest&amp;nbsp;=&amp;nbsp;new&amp;nbsp;URLRequest(&amp;quot;&lt;a href="http://localhost:8080/cutPicuter/servlet/FileManagerSaveFileServlet?realPath="&gt;http://localhost:8080/cutPicuter/servlet/FileManagerSaveFileServlet?realPath=&lt;/a&gt;&amp;quot;+encodeURIComponent(StringUtil.trim(realPath)));&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.method=URLRequestMethod.POST;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.contentType&amp;nbsp;=&amp;nbsp;&amp;quot;application/octet-stream&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.data&amp;nbsp;=&amp;nbsp;new&amp;nbsp;JPEGEncoder(80).encode(getImg());&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;loader:URLLoader&amp;nbsp;=&amp;nbsp;new&amp;nbsp;URLLoader();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loader.load(request);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loader.addEventListener(Event.COMPLETE,saveResult);&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}});&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;function&amp;nbsp;saveResult(event:Event):void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Application.application.reLoadFolderFiles(realPath.substr(0,realPath.lastIndexOf(&amp;quot;\\&amp;quot;)));&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&amp;quot;保存剪切图片成功&amp;quot;,&amp;quot;提示&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;]]&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:HBox&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:LinkButton&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;label&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;剪裁&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;doCapture();&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;icon&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;@Embed(&amp;#39;assets/cut.png&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:LinkButton&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;label&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;预览&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;doScan();&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;icon&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;@Embed(&amp;#39;assets/ok.png&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:VRule&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;22&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:LinkButton&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;label&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;保存&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;save()&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;icon&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;@Embed(&amp;#39;assets/save.png&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:LinkButton&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;label&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;另存为&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;downloadPicture();&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;icon&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;@Embed(&amp;#39;assets/saveAs.png&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:HBox&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Canvas&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;canvas&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;23&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;local:ScaleBox&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;box&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;visible&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Canvas&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;mx:Application&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&lt;br&gt; &lt;br&gt; java代码：&lt;br&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;package&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;com;&lt;br&gt;  &lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;java.io.DataOutputStream;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;java.io.File;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;java.io.FileOutputStream;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;java.io.IOException;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;java.io.InputStream;&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;javax.servlet.ServletException;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;javax.servlet.http.HttpServlet;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;javax.servlet.http.HttpServletRequest;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;javax.servlet.http.HttpServletResponse;&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/**&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &amp;nbsp;*&amp;nbsp;Servlet&amp;nbsp;implementation&amp;nbsp;class&amp;nbsp;FileManagerSaveFileServlet&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;FileManagerSaveFileServlet&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;HttpServlet&amp;nbsp;{&lt;br&gt;  &amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;len&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;处理流&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;mm&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;重命名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String&amp;nbsp;fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;文件原名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String&amp;nbsp;extName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;文件扩展名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String&amp;nbsp;tempFileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;文件名加扩展名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;doGet(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;  &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;throws&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;ServletException,&amp;nbsp;IOException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;processRequest(request,&amp;nbsp;response);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;doPost(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;throws&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;ServletException,&amp;nbsp;IOException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;processRequest(request,&amp;nbsp;response);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;processRequest(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response)&lt;br&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;throws&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;ServletException,&amp;nbsp;IOException&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;request.setCharacterEncoding(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;utf-8&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;String&amp;nbsp;realPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;request.getParameter(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;realPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;System.out.println(&amp;quot;FMSFS--&amp;gt;realPath:&amp;quot;+realPath);&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;response.setContentType(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;application/octet-stream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;InputStream&amp;nbsp;is&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;request.getInputStream();&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;size&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[]&amp;nbsp;tmp&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;100000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;tempFileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;realPath.substring(realPath.lastIndexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;切割获得文件名加扩展名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;tempFileName.substring(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,tempFileName.lastIndexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;切割获得文件名&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;确保获得真实的文件名如：1(1)可以获得真实为1,&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(fileName.indexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;){&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fileName.substring(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,fileName.indexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;br&gt;  &amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;extName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;tempFileName.substring(tempFileName.lastIndexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;切割获得扩展名&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用递归方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;reNameFile(realPath.substring(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,realPath.lastIndexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;),fileName,extName);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;nbsp;创建一个文件夹用来保存发过来的图片；&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;f&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;File(realPath.substring(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,realPath.lastIndexOf(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;extName);&lt;br&gt;  &amp;nbsp;&amp;nbsp;DataOutputStream&amp;nbsp;dos&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;DataOutputStream(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;FileOutputStream(f));&lt;br&gt;  &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;((len&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;is.read(tmp))&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;{&lt;br&gt;  &amp;nbsp;&amp;nbsp;dos.write(tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;len);&lt;br&gt; &amp;nbsp;&amp;nbsp;size&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;len;&lt;br&gt; &amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;dos.flush();&lt;br&gt; &amp;nbsp;&amp;nbsp;dos.close();&lt;br&gt; &amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(IOException&amp;nbsp;e)&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br&gt; &amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;}&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;递归来重命名文件名&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String&amp;nbsp;str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String&amp;nbsp;reNameFile(String&amp;nbsp;realPath,String&amp;nbsp;filename,String&amp;nbsp;extName){&lt;br&gt; &amp;nbsp;&amp;nbsp;File&amp;nbsp;file&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;File(realPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;filename&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;extName);&lt;br&gt;  &amp;nbsp;&amp;nbsp;str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(file.exists()){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mm&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mm;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;reNameFile(realPath,fileName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;str,extName);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(mm&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;){&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;_&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mm;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;str;&lt;br&gt; &amp;nbsp;}&lt;br&gt; }&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;br&gt; &amp;nbsp;&lt;/p&gt; &lt;p&gt;源码: &lt;a title="flex图片剪切示例" href="http://www.blogjava.net/Files/obpm/flexCutPicuter.rar"&gt;flex图片剪切示例&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt; 原创人员：Denny&lt;/p&gt;&lt;p&gt;摘自：&lt;a href="http://www.blogjava.net/obpm/archive/2010/09/01/330501.html"&gt;http://www.blogjava.net/obpm/archive/2010/09/01/330501.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-4317340278050330235?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/4317340278050330235/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=4317340278050330235' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4317340278050330235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/4317340278050330235'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/flex.html' title='flex图片剪切示例--预览、保存到本地、保存到服务器(附源码)（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-5769591304754863637</id><published>2010-12-12T12:58:00.003+08:00</published><updated>2010-12-12T12:58:59.056+08:00</updated><title type='text'>PHP对象编程实现3D饼图-PHP教程,PHP应用（转）</title><content type='html'>&amp;lt;?php  &lt;br&gt; &lt;br&gt;//公用函数  &lt;br&gt; &lt;br&gt;//把角度转换为弧度  &lt;br&gt;function deg2arc($degrees) {  &lt;br&gt;return($degrees * (pi()/180.0));  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;//rgb  &lt;br&gt;function getrgb($color){  &lt;br&gt;  $r=($color&amp;gt;&amp;gt;16) &amp;amp; 0xff;  &lt;br&gt;  $g=($color&amp;gt;&amp;gt;8) &amp;amp; 0xff;  &lt;br&gt;  $b=($color) &amp;amp; 0xff;  &lt;br&gt;  return (array($r,$g,$b));  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;// 取得在椭圆心为（0，0）的椭圆上 x,y点的值  &lt;br&gt;function pie_point($deg,$va,$vb){  &lt;br&gt;$x= cos(deg2arc($deg)) * $va;  &lt;br&gt;$y= sin(deg2arc($deg)) * $vb;  &lt;br&gt;return (array($x, $y));  &lt;br&gt;}  &lt;br&gt; &lt;br&gt; &lt;br&gt;//3d饼图类  &lt;br&gt; &lt;br&gt;class pie3d{  &lt;br&gt; &lt;br&gt;var $a; //椭圆长半轴  &lt;br&gt;var $b; //椭圆短半轴  &lt;br&gt;var $dataarray;  //每个扇形的数据  &lt;br&gt;var $colorarray; //每个扇形的颜色 需求按照十六进制书写但前面不加0x  &lt;br&gt;//为边缘及阴影为黑色  &lt;br&gt; &lt;br&gt;function pie3d($pa=100,$pb=60,$sdata=&amp;quot;100,200,300,400,500&amp;quot;, $scolor=&amp;quot;ee00ff,dd0000,cccccc,ccff00,00ccff&amp;quot;)  &lt;br&gt;{  &lt;br&gt;    $this-&amp;gt;a=$pa;  &lt;br&gt;    $this-&amp;gt;b=$pb;  &lt;br&gt;    $this-&amp;gt;dataarray=split(&amp;quot;,&amp;quot;,$sdata);  &lt;br&gt;    $this-&amp;gt;colorarray=split(&amp;quot;,&amp;quot;,$scolor);  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function seta($v){  &lt;br&gt;    $this-&amp;gt;a=$v;  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function geta(){  &lt;br&gt;    return $this-&amp;gt;a;  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function setb($v){  &lt;br&gt;    $this-&amp;gt;b=$v;   &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function getb(){  &lt;br&gt;    return $this-&amp;gt;b;  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function setdataarray($v){  &lt;br&gt;    $this-&amp;gt;dataarray=split(&amp;quot;,&amp;quot;,$v);  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function getdataarray($v){  &lt;br&gt;    return $this-&amp;gt;dataarray;  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function setcolorarray($v){  &lt;br&gt;    $this-&amp;gt;colorarray=split(&amp;quot;,&amp;quot;,$v);  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;function getcolorarray(){  &lt;br&gt;    return  $this-&amp;gt;colorarray;  &lt;br&gt;}  &lt;br&gt; &lt;br&gt;   &lt;br&gt;function  drawpie(){  &lt;br&gt;    $image=imagecreate($this-&amp;gt;a*2+40,$this-&amp;gt;b*2+40);  &lt;br&gt;    $piecenterx=$this-&amp;gt;a+10;  &lt;br&gt;    $piecentery=$this-&amp;gt;b+10;  &lt;br&gt;    $doublea=$this-&amp;gt;a*2;  &lt;br&gt;    $doubleb=$this-&amp;gt;b*2;  &lt;br&gt;    list($r,$g,$b)=getrgb(0);  &lt;br&gt;    $colorborder=imagecolorallocate($image,$r,$g,$b);  &lt;br&gt;    $datanumber=count($this-&amp;gt;dataarray);  &lt;br&gt;      &lt;br&gt;    //$datatotal  &lt;br&gt;    for($i=0;$i&amp;lt;$datanumber;$i++)      $datatotal+=$this-&amp;gt;dataarray[$i]; //算出数据和  &lt;br&gt;      &lt;br&gt;    //填充背境  &lt;br&gt;    imagefill($image, 0, 0, imagecolorallocate($image, 0xff, 0xff, 0xff));  &lt;br&gt; &lt;br&gt;    /*  &lt;br&gt;    ** 画每一个扇形  &lt;br&gt;    */  &lt;br&gt;    $degrees = 0;  &lt;br&gt;    for($i = 0; $i &amp;lt; $datanumber; $i++){  &lt;br&gt;        $startdegrees = round($degrees);  &lt;br&gt;        $degrees += (($this-&amp;gt;dataarray[$i]/$datatotal)*360);  &lt;br&gt;        $enddegrees = round($degrees);  &lt;br&gt;        $percent = number_format($this-&amp;gt;dataarray[$i]/$datatotal*100, 1);   &lt;br&gt;        list($r,$g,$b)=getrgb(hexdec($this-&amp;gt;colorarray[$i]));  &lt;br&gt;        $currentcolor=imagecolorallocate($image,$r,$g,$b);  &lt;br&gt;        if ($r&amp;gt;60 and $r&amp;lt;256)            $r=$r-60;  &lt;br&gt;        if ($g&amp;gt;60 and $g&amp;lt;256)            $g=$g-60;  &lt;br&gt;        if ($b&amp;gt;60 and $b&amp;lt;256)            $b=$b-60;  &lt;br&gt;        $currentdarkcolor=imagecolorallocate($image,$r,$g,$b);  &lt;br&gt;        //画扇形弧  &lt;br&gt;        imagearc($image,$piecenterx,$piecentery,$doublea,$doubleb,$startdegrees,$enddegrees,$currentcolor);  &lt;br&gt;        //画直线  &lt;br&gt;        list($arcx, $arcy) = pie_point($startdegrees , $this-&amp;gt;a , $this-&amp;gt;b);  &lt;br&gt;        imageline($image,$piecenterx,$piecentery,floor($piecenterx + $arcx),floor($piecentery + $arcy),$currentcolor);  &lt;br&gt;        //画直线  &lt;br&gt;        list($arcx, $arcy) = pie_point($enddegrees,$this-&amp;gt;a , $this-&amp;gt;b);  &lt;br&gt;        imageline($image,$piecenterx,$piecentery,ceil($piecenterx + $arcx),ceil($piecentery + $arcy),$currentcolor);  &lt;br&gt;        //填充扇形  &lt;br&gt;        $midpoint = round((($enddegrees - $startdegrees)/2) + $startdegrees);  &lt;br&gt;        list($arcx, $arcy) = pie_point($midpoint, $this-&amp;gt;a*3/4 , $this-&amp;gt;b*3/4);  &lt;br&gt;          &lt;br&gt;        imagefilltoborder($image,floor($piecenterx + $arcx),floor($piecentery + $arcy), $currentcolor,$currentcolor);  &lt;br&gt;        imagestring($image,2,floor($piecenterx + $arcx-5),floor($piecentery + $arcy-5),$percent.&amp;quot;%&amp;quot;,$colorborder);  &lt;br&gt; &lt;br&gt;        //画阴影  &lt;br&gt;        if ($startdegrees&amp;gt;=0 and $startdegrees&amp;lt;=180){  &lt;br&gt;           if($enddegrees&amp;lt;=180){      &lt;br&gt;               for($k = 1; $k &amp;lt; 15; $k++)  &lt;br&gt;                imagearc($image,$piecenterx, $piecentery+$k,$doublea, $doubleb, $startdegrees, $enddegrees, $currentdarkcolor);  &lt;br&gt;           }else{  &lt;br&gt;               for($k = 1; $k &amp;lt; 15; $k++)  &lt;br&gt;                imagearc($image,$piecenterx, $piecentery+$k,$doublea, $doubleb, $startdegrees, 180, $currentdarkcolor);  &lt;br&gt;           }  &lt;br&gt; &lt;br&gt;        }  &lt;br&gt;   }  &lt;br&gt;          &lt;br&gt;    /*到此脚本已生了一幅图像了  &lt;br&gt;    **目前需要的是把他发到浏览器上，重要的一点是要将标头发给浏览器，让他知道是个gif文件。不然的话你只能看到一堆奇怪的乱码  &lt;br&gt;    */   &lt;br&gt;    //输出生成的图片      &lt;br&gt;    header(&amp;quot;content-type: image/gif&amp;quot;);  &lt;br&gt;    imagegif($image);  &lt;br&gt;    imagedestroy($image);  &lt;br&gt;}//end drawpie()  &lt;br&gt;}//end class  &lt;br&gt; &lt;br&gt; &lt;br&gt;//实现  &lt;br&gt; &lt;br&gt;$objp = new pie3d();  &lt;br&gt;$objp-&amp;gt;drawpie();  &lt;br&gt;?&amp;gt;&lt;br&gt;&lt;br&gt;摘自：&lt;a href="http://www.sudu.cn/info/html/edu/20071226/34973.html"&gt;http://www.sudu.cn/info/html/edu/20071226/34973.html&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-5769591304754863637?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/5769591304754863637/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=5769591304754863637' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5769591304754863637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/5769591304754863637'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/php3d-phpphp.html' title='PHP对象编程实现3D饼图-PHP教程,PHP应用（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-1845923775163132366</id><published>2010-12-12T12:58:00.001+08:00</published><updated>2010-12-12T12:58:08.748+08:00</updated><title type='text'>flex post数据到动态页面（转）</title><content type='html'>&lt;div id="blog_text" class="cnt"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 18px; text-align: left;"&gt; &lt;p style="padding: 0px; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;public function submit():void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#93c47d"&gt; //要请求的URL&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var request:URLRequest = new URLRequest(&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;a style="color: rgb(16, 138, 198); text-decoration: underline;" href="http://localhost:8086/ubas/report/getReportParmOut.do"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;http://localhost:8086/test.do&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;&amp;quot;) ;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  var load:URLLoader = new URLLoader() ;&lt;br&gt; &amp;nbsp;&amp;nbsp;&lt;font color="#6aa84f"&gt;  //URL参数&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var variables:URLVariables = new URLVariables();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#6aa84f"&gt; //variables.+后面的参数 表示要提交的参数。&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  variables.content = content.text;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;a href="http://variables.no"&gt;variables.no&lt;/a&gt; = 1001 ;&lt;br&gt;  &lt;font color="#6aa84f"&gt;&amp;nbsp;&amp;nbsp;  //提交的方式&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  request.method=URLRequestMethod.POST;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#6aa84f"&gt; //提交的数据&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  request.data=variables ;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  load.dataFormat = URLLoaderDataFormat.TEXT ;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  load.load(request) ;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;  }&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt; &lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt; &lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;后台通过：&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;String content = request.getParameter(&amp;quot;content&amp;quot;) 获取；&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;String no = request.getParameter(&amp;quot;no &amp;quot;) 获取；&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="padding: 0px; margin: 0px;"&gt;&lt;br&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding: 0px; margin: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;font size="2"&gt;摘自：&lt;a href="http://hi.baidu.com/minux2007/blog/item/e858905011e1ac040df3e3e4.html"&gt;http://hi.baidu.com/minux2007/blog/item/e858905011e1ac040df3e3e4.html&lt;/a&gt;&lt;br&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-1845923775163132366?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/1845923775163132366/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=1845923775163132366' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1845923775163132366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/1845923775163132366'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/flex-post.html' title='flex post数据到动态页面（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6175987825119021580</id><published>2010-12-12T10:51:00.001+08:00</published><updated>2010-12-12T10:51:27.419+08:00</updated><title type='text'>Flex + PHP 实现上传文件（包括进度条功能）（转）</title><content type='html'>摘自：&lt;a href="http://hi.baidu.com/jianzl/blog/item/3b7e22611e0df06c0c33fad4.html"&gt;http://hi.baidu.com/jianzl/blog/item/3b7e22611e0df06c0c33fad4.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div id="blog_text" class="cnt"&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;参考网上代码实现的FLEX+PHP上传文件功能&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;upload.mxml内容：&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br&gt; &amp;lt;mx:Application xmlns:mx=&amp;quot;&lt;a href="http://www.adobe.com/2006/mxml"&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&amp;quot; &lt;br&gt;  layout=&amp;quot;absolute&amp;quot; borderColor=&amp;quot;#FFFFFF&amp;quot; &lt;br&gt;  backgroundGradientAlphas=&amp;quot;[1.0, 1.0]&amp;quot; &lt;br&gt;  backgroundGradientColors=&amp;quot;[#FFFFFF, #FFFFFF]&amp;quot; &lt;br&gt;  height=&amp;quot;30&amp;quot; width=&amp;quot;420&amp;quot;&lt;br&gt;  initialize=&amp;quot;init(&amp;#39;&amp;#39;)&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;mx:Script&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;![CDATA[&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  public var file_fr:FileReference = new FileReference();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  public var LI:LoaderInfo;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var list_obj:Object = new Object();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var max_size = 0;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //保存文件地址&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var up_url = &amp;quot;save.php&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //进度条颜色&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var bg_color = &amp;quot;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传文件类型&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var limit_type=&amp;quot;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //保存文件的主目录&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  var savemainpath=&amp;quot;&amp;quot;;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //当点击浏览按钮时&lt;br&gt;  private function brownsfile():void{&lt;br&gt; &amp;nbsp;&amp;nbsp; if (limit_type != &amp;quot;&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var s:String = &amp;quot;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var arr:Array = limit_type.split(&amp;quot;|&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var fst:Number = 1;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i=0;i&amp;lt;arr.length;i++)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (arr[i] == &amp;quot;&amp;quot;) continue;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!fst) s+= &amp;#39;;&amp;#39;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s += &amp;quot;*.&amp;quot;+arr[i];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fst = 0;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var browseFilter:FileFilter = new FileFilter(&amp;quot;受限文件(&amp;quot;+s+&amp;quot;)&amp;quot;, s);&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; file_fr.browse([browseFilter]);//.browse([{description: &amp;quot;受限文件(&amp;quot;+s+&amp;quot;)&amp;quot;, extension: s}]);&lt;br&gt; &amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp; else&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  file_fr.browse();&lt;br&gt; &amp;nbsp;&amp;nbsp; configureListeners(file_fr);&lt;br&gt;  }&lt;br&gt;  &lt;br&gt;   //绑定监听&lt;br&gt;   private function configureListeners(dispatcher:IEventDispatcher):void {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(Event.CANCEL, cancelHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(Event.COMPLETE, completeHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //dispatcher.addEventListener(Event.OPEN, openHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(ProgressEvent.PROGRESS, onProgress);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(Event.SELECT, fileSelected);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;/p&gt; &lt;p&gt; &lt;br&gt;   //当选中文件时&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  public function fileSelected(event:Event):void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   file_fr = FileReference(event.target);&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; upload_butn.enabled = true;&lt;br&gt; &amp;nbsp;&amp;nbsp; name_txt.text = &lt;a href="http://file_fr.name"&gt;file_fr.name&lt;/a&gt; + &amp;quot; (&amp;quot;+deal_size(file_fr.size)+&amp;quot;)&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp; if (file_fr.size &amp;gt; max_size &amp;amp;&amp;amp; max_size != 0)&lt;br&gt; &amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; init(&amp;quot;单个上传文件不能大于 &amp;quot;+deal_size(max_size));&lt;br&gt; &amp;nbsp;&amp;nbsp; }&lt;br&gt;  }&lt;br&gt;  &lt;br&gt;  //当点击上传或取消按钮时&lt;br&gt;  private function uploadfile() {&lt;br&gt; &amp;nbsp;&amp;nbsp; if (upload_butn.label == &amp;quot;上传&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var variables:URLVariables = new URLVariables();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; variables.savepath = savemainpath;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; var uploadURL = new URLRequest();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  uploadURL.url = up_url;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  uploadURL.data = variables;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  uploadURL.method=URLRequestMethod.POST;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; file_fr.upload(uploadURL);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; upload_butn.label = &amp;quot;取消&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; browse_butn.enabled = false;&lt;br&gt; &amp;nbsp;&amp;nbsp; }else&lt;br&gt; &amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; file_fr.cancel();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; init(&amp;quot;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp; }&lt;br&gt;  }&lt;br&gt;  //正在上传中时&lt;br&gt;  private function onProgress(event:ProgressEvent)&lt;br&gt;  {&lt;br&gt; &amp;nbsp;&amp;nbsp; var tmploaded:Number = event.bytesLoaded;&lt;br&gt; &amp;nbsp;&amp;nbsp; //var tmptotal:Number = event.bytesTotal;&lt;br&gt; &amp;nbsp;&amp;nbsp; name_txt.text = &amp;quot;正在上传&amp;quot;+&lt;a href="http://file_fr.name"&gt;file_fr.name&lt;/a&gt;+&amp;quot;(&amp;quot;+deal_size(file_fr.size)+&amp;quot;): &amp;quot;+Math.floor(tmploaded*100/file_fr.size)+&amp;quot;%&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp; drawRec(tmploaded,file_fr.size);&lt;br&gt;  }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传完成并返回数据时&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  private function uploadCompleteDataHandler(event:DataEvent):void{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var result:XML = new XML(event.data);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var tmpStr = result.toString();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  tmpStr = tmpStr.substring(0,6);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(tmpStr==&amp;quot;Error:&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  init(&amp;quot;文件上传失败：Error=[403 or 404]&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  else&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ExternalInterface.call(&amp;quot;uploadJSAction&amp;quot;, result.toString(),savemainpath);&lt;br&gt;  }&lt;br&gt;  &lt;br&gt;  //上传完成时&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  private function completeHandler(event:Event){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  init(&amp;quot;文件上传完毕！&amp;quot;);&lt;br&gt;  }&lt;/p&gt; &lt;p&gt; //文件读写失败时 &lt;br&gt;  public function ioErrorHandler(event:IOErrorEvent)&lt;br&gt;  {&lt;br&gt; &amp;nbsp;&amp;nbsp; init(&amp;quot;文件上传失败： &amp;quot; + &lt;a href="http://file_fr.name"&gt;file_fr.name&lt;/a&gt;+&amp;quot;；Error:文件 I/O 错误。&amp;quot;);&lt;br&gt;  }&lt;/p&gt; &lt;p&gt; //安全错误&lt;br&gt;  public function securityErrorHandler(fileRef:FileReference,error)&lt;br&gt;  {&lt;br&gt; &amp;nbsp;&amp;nbsp; init( &amp;quot;安全设置错误 &amp;quot; + &lt;a href="http://file_fr.name"&gt;file_fr.name&lt;/a&gt; + &amp;quot;:&amp;quot; + error);&lt;br&gt;  }&lt;/p&gt; &lt;p&gt; //HTTP错误，当出现其他错误时，save.php也会发出404错误&lt;br&gt;  public function httpStatusHandler(event:HTTPStatusEvent)&lt;br&gt;  {&lt;br&gt; &amp;nbsp;&amp;nbsp; init(&amp;quot;文件上传失败!&amp;quot;+event.status);&lt;br&gt;  }&lt;/p&gt; &lt;p&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //取消上传时&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  public function cancelHandler(){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  init(&amp;quot;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt;   &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //初始化&lt;br&gt;  public function init(s:String):void{&lt;br&gt; &amp;nbsp;&amp;nbsp; //获得参数对象&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var param:Object = Application.application.parameters;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传最大文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  max_size = param[&amp;quot;maxsize&amp;quot;];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  max_size = (!max_size)?20*1024:max_size*1024;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //保存文件地址&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  up_url = param[&amp;quot;savefile&amp;quot;];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  up_url = (up_url==&amp;quot;&amp;quot;)?&amp;quot;save.php&amp;quot;:up_url;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //进度条颜色&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  bg_color = param[&amp;quot;bgcolor&amp;quot;];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  bg_color = (bg_color == &amp;quot;&amp;quot;)?Math.random()*0xff5079:&amp;quot;0x&amp;quot;+bg_color;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传文件类型&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  limit_type = param[&amp;quot;limit&amp;quot;];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  limit_type = (limit_type==&amp;quot;&amp;quot;)?&amp;quot;&amp;quot;:limit_type;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传文件类型&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  savemainpath = param[&amp;quot;imgpath&amp;quot;];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  savemainpath = (savemainpath==&amp;quot;&amp;quot;)?&amp;quot;&amp;quot;:savemainpath;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp; progress_cav.setStyle(&amp;quot;backgroundColor&amp;quot;,bg_color);&lt;br&gt; &amp;nbsp;&amp;nbsp; if (!s) name_txt.text = &amp;quot;选择一个文件&amp;quot;;//+strTemp;&lt;br&gt; &amp;nbsp;&amp;nbsp; else name_txt.text = s;&lt;br&gt; &amp;nbsp;&amp;nbsp; browse_butn.enabled = true;&lt;br&gt; &amp;nbsp;&amp;nbsp; upload_butn.enabled = false;&lt;br&gt; &amp;nbsp;&amp;nbsp; upload_butn.label = &amp;quot;上传&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp; progress_cav.width=0;&lt;br&gt;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  //得到URL传递的参数值&lt;br&gt;  private function get_val(s,val)&lt;br&gt;  {&lt;br&gt; &amp;nbsp;&amp;nbsp; var arr = s.split(&amp;quot;?&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp; if (!arr[1]) return &amp;quot;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp; s = arr[1];&lt;br&gt; &amp;nbsp;&amp;nbsp; arr = s.split(val+&amp;quot;=&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp; if (!arr[1]) return &amp;quot;&amp;quot;;&lt;br&gt; &amp;nbsp;&amp;nbsp; s = arr[1];&lt;br&gt; &amp;nbsp;&amp;nbsp; arr = s.split(&amp;quot;&amp;amp;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp; return arr[0];&lt;br&gt;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  /*处理文件大小表示方法*/&lt;br&gt;  private function deal_size(s:Number):String {&lt;br&gt; &amp;nbsp;&amp;nbsp; var danwei:Array = [&amp;quot;Byte&amp;quot;,&amp;quot;KB&amp;quot;,&amp;quot;MB&amp;quot;,&amp;quot;GB&amp;quot; ];&lt;br&gt; &amp;nbsp;&amp;nbsp; var d:Number = 0;&lt;br&gt; &amp;nbsp;&amp;nbsp; while ( s &amp;gt;= 900 )&lt;br&gt; &amp;nbsp;&amp;nbsp; {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; s = Math.round(s*100/1024)/100;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; d++;&lt;br&gt; &amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp; return s+&amp;quot; &amp;quot;+danwei[d];&lt;br&gt;  } &lt;br&gt;  &lt;br&gt;  //画进度背景条&lt;br&gt;  private function drawRec (i:Number,t:Number):void {&lt;br&gt; &amp;nbsp;&amp;nbsp; var per:Number = Math.floor(i*100/t)/100;&lt;br&gt; &amp;nbsp;&amp;nbsp; var tmpWidth:Number = this.width * per;&lt;br&gt; &amp;nbsp;&amp;nbsp; progress_cav.width=tmpWidth;&lt;br&gt;  }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ]]&amp;gt;&lt;br&gt; &amp;lt;/mx:Script&amp;gt;&lt;br&gt;  &amp;lt;mx:Canvas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;10&amp;quot; height=&amp;quot;30&amp;quot;  backgroundColor=&amp;quot;#5075FF&amp;quot; borderColor=&amp;quot;#FFFFFF&amp;quot; color=&amp;quot;#FFFFFF&amp;quot;  borderStyle=&amp;quot;none&amp;quot; id=&amp;quot;progress_cav&amp;quot;&amp;gt;&lt;br&gt;  &amp;lt;/mx:Canvas&amp;gt;&lt;br&gt;  &amp;lt;mx:TextInput x=&amp;quot;307&amp;quot; y=&amp;quot;4&amp;quot; height=&amp;quot;22&amp;quot; width=&amp;quot;51&amp;quot; borderStyle=&amp;quot;none&amp;quot; cornerRadius=&amp;quot;4&amp;quot;/&amp;gt;&lt;br&gt;  &amp;lt;mx:TextInput x=&amp;quot;363&amp;quot; y=&amp;quot;4&amp;quot; height=&amp;quot;22&amp;quot; width=&amp;quot;51&amp;quot; borderStyle=&amp;quot;none&amp;quot; cornerRadius=&amp;quot;4&amp;quot;/&amp;gt;&lt;br&gt;  &amp;lt;mx:Button x=&amp;quot;363&amp;quot; y=&amp;quot;4&amp;quot; label=&amp;quot;上传&amp;quot; fontSize=&amp;quot;12&amp;quot; id=&amp;quot;upload_butn&amp;quot;  enabled=&amp;quot;false&amp;quot; click=&amp;quot;uploadfile();&amp;quot; height=&amp;quot;22&amp;quot; cornerRadius=&amp;quot;0&amp;quot;/&amp;gt;&lt;br&gt;  &amp;lt;mx:Button x=&amp;quot;307&amp;quot; y=&amp;quot;4&amp;quot; label=&amp;quot;浏览&amp;quot; fontSize=&amp;quot;12&amp;quot; id=&amp;quot;browse_butn&amp;quot; click=&amp;quot;brownsfile();&amp;quot; height=&amp;quot;22&amp;quot; cornerRadius=&amp;quot;0&amp;quot;/&amp;gt;&lt;br&gt;  &amp;lt;mx:TextInput x=&amp;quot;4&amp;quot; y=&amp;quot;4&amp;quot; width=&amp;quot;300&amp;quot; themeColor=&amp;quot;#B5B5B5&amp;quot;  enabled=&amp;quot;true&amp;quot; editable=&amp;quot;false&amp;quot; borderStyle=&amp;quot;solid&amp;quot; id=&amp;quot;name_txt&amp;quot;  text=&amp;quot;选择一个文件&amp;quot; fontSize=&amp;quot;12&amp;quot; color=&amp;quot;#000000&amp;quot; height=&amp;quot;22&amp;quot;/&amp;gt;&lt;br&gt; &amp;lt;/mx:Application&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;saveimg.php内容如下：&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;?php&lt;br&gt; &lt;br&gt; //取得保存文件的主目录&lt;br&gt; $savepath = $_POST[&amp;quot;savepath&amp;quot;];&lt;/p&gt; &lt;p&gt;foreach($_FILES as $f)&lt;br&gt; {&lt;br&gt; session_start();&lt;br&gt;  //取得服务器当前时间：HHMISSMMM&lt;br&gt; $saveFileName = date(&amp;quot;dHis&amp;quot;);&lt;br&gt; $saveFileName = substr(session_id(),0,8).&amp;quot;_&amp;quot;.$saveFileName.substr(microtime(),2,4);&lt;/p&gt; &lt;p&gt;//取得上传的文件类型&lt;br&gt; $uploadFileType = strtolower($f[&amp;#39;name&amp;#39;]);&lt;br&gt; //echo $uploadFileType;&lt;br&gt; //exit;&lt;br&gt; $uploadFileType = strrchr($uploadFileType,&amp;quot;.&amp;quot;);&lt;/p&gt; &lt;p&gt;//设定保存的文件名&lt;br&gt; $saveFileName = $saveFileName.$uploadFileType;&lt;/p&gt; &lt;p&gt;//上传文件保存目录&lt;br&gt; $UploadPath = &amp;quot;../../upload/&amp;quot;.$savepath.&amp;quot;/&amp;quot;;&lt;/p&gt; &lt;p&gt;&lt;br&gt; //根据月份创建子目录&lt;br&gt; $nowMonth = date(&amp;quot;Ym&amp;quot;);&lt;br&gt; mkdir($UploadPath.$nowMonth, 0700);&lt;br&gt; $UploadPath = $UploadPath.$nowMonth.&amp;quot;/&amp;quot;;&lt;br&gt;  //处理中文名&lt;br&gt;  if (function_exists(&amp;quot;iconv&amp;quot;))  $f[name] = iconv(&amp;quot;UTF-8&amp;quot;,&amp;quot;GB2312&amp;quot;,$f[name]);&lt;br&gt;  //检查是否已经存在同名文件&lt;br&gt;  if (file_exists($f[name]))  echo &amp;quot;Error:403 Found Same Filename&amp;quot;;&lt;br&gt;  //保存文件&lt;br&gt;  if (&lt;a href="mailto:%21@move_uploaded_file%28$f[%22tmp_name%22],$UploadPath.$saveFileName"&gt;!@move_uploaded_file($f[&amp;quot;tmp_name&amp;quot;],$UploadPath.$saveFileName&lt;/a&gt;))&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  echo &amp;quot;Error:404 Not Found&amp;quot;;&lt;br&gt;  else&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  echo $nowMonth.&amp;quot;/&amp;quot;.$saveFileName;&lt;br&gt; }&lt;br&gt; ?&amp;gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;测试页面内容：test.html内容：&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;label&amp;gt;上传图片：&amp;lt;/label&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uploadfile&amp;quot; id=&amp;quot;uploadfile&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span id=&amp;quot;uploadSpanDiv&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;span id=&amp;quot;uploadSwfSpanDiv&amp;quot; style=&amp;quot;display:&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;embed &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;   src=&amp;quot;./swf/upload.swf?savefile=./save/savedpjcimg.php&amp;amp;limit=jpeg|gif|jpg&amp;amp;maxsize=204800&amp;amp;bgcolor=ff5079&amp;amp;imgpath=dpjcimages&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  width=&amp;quot;420&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  height=&amp;quot;30&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  align=&amp;quot;middle&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  play=&amp;quot;true&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  loop=&amp;quot;false&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  quality=&amp;quot;high&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  type=&amp;quot;application/x-shockwave-flash&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/embed&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/span&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt; 相关JS内容：&lt;/p&gt; &lt;p&gt;function uploadJSAction(fileName,imgpath){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadSpanDiv&amp;quot;).html(&amp;quot;&amp;lt;a  href=&amp;#39;javascript:showimg(\&amp;quot;&amp;quot;+fileName+&amp;quot;\&amp;quot;,\&amp;quot;&amp;quot;+imgpath+&amp;quot;\&amp;quot;)&amp;#39;&amp;gt;&amp;quot;+fileName+&amp;quot;&amp;lt;/a&amp;gt;  &amp;lt;a href=&amp;#39;javascript:showSwf();&amp;#39;&amp;gt;删除文件&amp;lt;/a&amp;gt;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadSpanDiv&amp;quot;).css(&amp;quot;display&amp;quot;,&amp;quot;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadSwfSpanDiv&amp;quot;).css(&amp;quot;display&amp;quot;,&amp;quot;none&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadfile&amp;quot;).val(fileName);&lt;br&gt; }&lt;br&gt; function showSwf(){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadSwfSpanDiv&amp;quot;).css(&amp;quot;display&amp;quot;,&amp;quot;&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadSpanDiv&amp;quot;).css(&amp;quot;display&amp;quot;,&amp;quot;none&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&amp;quot;#uploadfile&amp;quot;).val(&amp;quot;&amp;quot;);&lt;br&gt; }&lt;/p&gt; &lt;p&gt;function showimg(fileName,imgpath){&lt;br&gt; &amp;nbsp;&amp;nbsp; $(document).jdialog({title:&amp;quot;预览上传的图片&amp;quot;,content : &amp;quot;&lt;a href="http://hi.baidu.com/fc/editor/get?show_upload_image.php?img=%22+fileName+%22&amp;amp;path=%22+imgpath"&gt;url:get?show_upload_image.php?img=&amp;quot;+fileName+&amp;quot;&amp;amp;path=&amp;quot;+imgpath&lt;/a&gt;});&lt;br&gt;  }&lt;/p&gt;&lt;/div&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6175987825119021580?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6175987825119021580/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6175987825119021580' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6175987825119021580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6175987825119021580'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/flex-php.html' title='Flex + PHP 实现上传文件（包括进度条功能）（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-6125295859396398200</id><published>2010-12-12T10:50:00.001+08:00</published><updated>2010-12-12T10:50:05.836+08:00</updated><title type='text'>php上传文件详解（转）</title><content type='html'>&amp;lt;?php &lt;br&gt; /****************************************************************************** &lt;br&gt; &lt;br&gt; 参数说明: &lt;br&gt; $max_file_size&amp;nbsp;&amp;nbsp; : 上传文件大小限制, 单位BYTE &lt;br&gt; $destination_folder : 上传文件路径 &lt;br&gt; $watermark&amp;nbsp;&amp;nbsp;  : 是否附加水印(1为加水印,其他为不加水印); &lt;br&gt; &lt;br&gt; 使用说明: &lt;br&gt; 1. 将PHP.INI文件里面的&amp;quot;extension=php_gd2.dll&amp;quot;一行前面的;号去掉,因为我们要用到GD库; &lt;br&gt; 2. 将extension_dir =改为你的php_gd2.dll所在目录; &lt;br&gt; ******************************************************************************/ &lt;br&gt; &lt;br&gt; //上传文件类型列表 &lt;br&gt; $uptypes=array( &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/jpg&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/jpeg&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/png&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/pjpeg&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/gif&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/bmp&amp;#39;, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;image/x-png&amp;#39; &lt;br&gt; ); &lt;br&gt; &lt;br&gt; $max_file_size=2000000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //上传文件大小限制, 单位BYTE &lt;br&gt; $destination_folder=&amp;quot;uploadimg/&amp;quot;; //上传文件路径 &lt;br&gt; $watermark=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //是否附加水印(1为加水印,其他为不加水印); &lt;br&gt; $watertype=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //水印类型(1为文字,2为图片) &lt;br&gt; $waterposition=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); &lt;br&gt; $waterstring=&amp;quot;&lt;a href="http://www.php100.com/"&gt;http://www.php100.com/&lt;/a&gt;&amp;quot;;&amp;nbsp;&amp;nbsp; //水印字符串 &lt;br&gt; $waterimg=&amp;quot;xplore.gif&amp;quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //水印图片 &lt;br&gt; $imgpreview=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //是否生成预览图(1为生成,其他为不生成); &lt;br&gt; $imgpreviewsize=1/2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //缩略图比例 &lt;br&gt; ?&amp;gt; &lt;br&gt; &lt;br&gt; &amp;lt;form enctype=&amp;quot;multipart/form-data&amp;quot; method=&amp;quot;post&amp;quot;  name=&amp;quot;upform&amp;quot;&amp;gt;&amp;lt;!--注: 要确保文件上传表单的属性是  enctype=&amp;quot;multipart/form-data&amp;quot;，否则文件上传不了。--&amp;gt; &lt;br&gt; &amp;nbsp;&amp;nbsp; 上传文件: &lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;lt;input name=&amp;quot;upfile&amp;quot; type=&amp;quot;file&amp;quot;&amp;gt; &lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;上传&amp;quot;&amp;gt;&amp;lt;br&amp;gt; &lt;br&gt; &amp;nbsp;&amp;nbsp; 允许上传的文件类型为:&amp;lt;?=implode(&amp;#39;, &amp;#39;,$uptypes)?&amp;gt;&amp;lt;!-- 将数组变成字符串。各数组间用&amp;lsquo;，&amp;rsquo;分开. --&amp;gt; &lt;br&gt; &amp;lt;/form&amp;gt; &lt;br&gt; &lt;br&gt; &amp;lt;?php &lt;br&gt; if ($_SERVER[&amp;#39;REQUEST_METHOD&amp;#39;] ==  &amp;#39;POST&amp;#39;)//访问页面时的请求方法。例如：&amp;ldquo;GET&amp;rdquo;、&amp;ldquo;HEAD&amp;rdquo;，&amp;ldquo;POST&amp;rdquo;，&amp;ldquo;PUT&amp;rdquo;。 注: 如果请求的方式是 HEAD，PHP  脚本将在送出头信息后中止（这意味着在产生任何输出后，不再有输出缓冲）。 &lt;br&gt; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!is_uploaded_file($_FILES[&amp;quot;upfile&amp;quot;][tmp_name]))//语法：bool is_uploaded_file ( string filename ) 判断文件是否是通过 HTTP POST 上传的。 &lt;br&gt; /* &lt;br&gt; * 我们假设文件上传字段的名称如上例所示，为 userfile。名称可随意命名。 &lt;br&gt; $_FILES[&amp;#39;userfile&amp;#39;][&amp;#39;name&amp;#39;] &lt;br&gt; 客户端机器文件的原名称。 &lt;br&gt; &lt;br&gt; $_FILES[&amp;#39;userfile&amp;#39;][&amp;#39;type&amp;#39;] &lt;br&gt; 文件的 MIME 类型，如果浏览器提供此信息的话。一个例子是&amp;ldquo;image/gif&amp;rdquo;。不过此 MIME 类型在 PHP 端并不检查，因此不要想当然认为有这个值。 &lt;br&gt; &lt;br&gt; $_FILES[&amp;#39;userfile&amp;#39;][&amp;#39;size&amp;#39;] &lt;br&gt; 已上传文件的大小，单位为字节。 &lt;br&gt; &lt;br&gt; $_FILES[&amp;#39;userfile&amp;#39;][&amp;#39;tmp_name&amp;#39;] &lt;br&gt; 文件被上传后在服务端储存的临时文件名。 &lt;br&gt; &lt;br&gt; $_FILES[&amp;#39;userfile&amp;#39;][&amp;#39;error&amp;#39;] &lt;br&gt; 和该文件上传相关的错误代码。错误代码值有： &lt;br&gt; 其值为 0，没有错误发生，文件上传成功。 &lt;br&gt; 其值为 1，上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 &lt;br&gt; 其值为 2，上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 &lt;br&gt; 其值为 3，文件只有部分被上传。 &lt;br&gt; 其值为 4，没有文件被上传。 &lt;br&gt; 其值为 6，找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。 &lt;br&gt; 其值为 7，文件写入失败。PHP 5.1.0 引进。 &lt;br&gt; */ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //是否存在文件 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  echo &amp;quot;图片不存在!&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $file = $_FILES[&amp;quot;upfile&amp;quot;];//$file变成一个数组. &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($max_file_size &amp;lt; $file[&amp;quot;size&amp;quot;]) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //检查文件大小 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;文件太大!&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!in_array($file[&amp;quot;type&amp;quot;], $uptypes))//in_array -- 检查数组中是否存在某个值 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //检查文件类型 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool in_array ( mixed needle, array haystack [, bool strict] ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //在 haystack 中搜索 needle，如果找到则返回 TRUE，否则返回 FALSE。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //注: 如果 needle 是字符串，则比较是区分大小写的。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;文件类型不符：&amp;quot;.$file[&amp;quot;type&amp;quot;]; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!file_exists($destination_folder))//file_exists -- 检查文件或目录是否存在  语法：bool file_exists ( string filename )如果由 filename 指定的文件或目录存在则返回  TRUE，否则返回 FALSE。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mkdir($destination_folder);//mkdir -- 新建目录 语法：bool mkdir (  string pathname [, int mode] )如果成功则返回 TRUE，失败则返回 FALSE。注: Mode 在 Windows  下被忽略。默认的 mode 是 0777，意味着最大可能的访问权。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $filename=$file[&amp;quot;tmp_name&amp;quot;];//文件被上传后在服务端储存的临时文件名。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $image_size = getimagesize($filename);//getimagesize -- 取得图像大小 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //返回一个具有四个单元的数组。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //索引 0 包含图像宽度的像素值。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //索引 1 包含图像高度的像素值。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //索引 2 是图像类型的标记： &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //1 = GIF，2 = JPG，3 = PNG，4 = SWF，5 = PSD，6 = BMP，7 = TIFF(intel  byte order)，8 = TIFF(motorola byte order)，9 = JPC，10 = JP2，11 = JPX，12 =  JB2，13 = SWC，14 = IFF，15 = WBMP，16 = XBM。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //索引 3 是文本字符串，内容为&amp;ldquo;height=&amp;quot;yyy&amp;quot; width=&amp;quot;xxx&amp;quot;&amp;rdquo;，可直接用于 IMG 标记。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $pinfo=pathinfo($file[&amp;quot;name&amp;quot;]);//语法：array pathinfo ( string path [, int options] ) -- 返回文件路径的信息 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pathinfo() 返回一个联合数组包含有 path 的信息。包括以下的数组单元：dirname，basename 和 extension。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 例子： &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  * &amp;lt;?php &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  $path_parts = pathinfo(&amp;quot;/www/htdocs/index.html&amp;quot;); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  echo $path_parts[&amp;quot;dirname&amp;quot;] . &amp;quot;\n&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  echo $path_parts[&amp;quot;basename&amp;quot;] . &amp;quot;\n&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  echo $path_parts[&amp;quot;extension&amp;quot;] . &amp;quot;\n&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上例将输出： &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /www/htdocs &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  index.html &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  html &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ftype=$pinfo[&amp;#39;extension&amp;#39;]; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $destination = $destination_folder.time().&amp;quot;.&amp;quot;.$ftype;//函数:time() 返回当前的 Unix 时间戳 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (file_exists($destination) &amp;amp;&amp;amp; $overwrite !=  true)//&amp;amp;&amp;amp; 与。|| 或。$overwrite  允许覆盖远程服务器上已存在的文件。仅适用于写入模式（上传）。默认值:FALSE（禁用） &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;同名文件已经存在了&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!move_uploaded_file ($filename, $destination))//move_uploaded_file -- 将上传的文件移动到新位置 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //bool move_uploaded_file ( string filename, string destination ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //本函数检查并确保由 filename 指定的文件是合法的上传文件（即通过 PHP 的 HTTP POST 上传机制所上传的）。如果文件合法，则将其移动为由 destination 指定的文件。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果 filename 不是合法的上传文件，不会出现任何操作，move_uploaded_file() 将返回 FALSE。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;移动文件出错&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $pinfo=pathinfo($destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $fname=$pinfo[basename]; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot; &amp;lt;font color=red&amp;gt;已经成功上传&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;文件名:&amp;nbsp;&amp;nbsp;  &amp;lt;font  color=blue&amp;gt;&amp;quot;.$destination_folder.$fname.&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot; 宽度:&amp;quot;.$image_size[0];//索引 0 包含图像宽度的像素值。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot; 长度:&amp;quot;.$image_size[1];//索引 1 包含图像高度的像素值。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;&amp;lt;br&amp;gt; 大小:&amp;quot;.$file[&amp;quot;size&amp;quot;].&amp;quot; bytes&amp;quot;;//bytes字节 &lt;br&gt; &lt;br&gt; //图片水印处理开始： &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($watermark==1) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $iinfo=getimagesize($destination,$iinfo);//可否写成：$iinfo=getimagesize($destination);? &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $nimage=imagecreatetruecolor($image_size[0],$image_size[1]); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：resource imagecreatetruecolor ( int x_size, int y_size )-- 新建一个真彩色图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecreatetruecolor() 返回一个图像标识符，代表了一幅大小为 x_size 和 y_size 的黑色图像。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $white=imagecolorallocate($nimage,255,255,255); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：int imagecolorallocate ( resource image, int red, int green, int blue ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecolorallocate -- 为一幅图像分配颜色 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecolorallocate() 返回一个标识符，代表了由给定的 RGB 成分组成的颜色。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $black=imagecolorallocate($nimage,0,0,0); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $red=imagecolorallocate($nimage,255,0,0); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagefill($nimage,0,0,$white); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool imagefill ( resource image, int x, int y, int color ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagefill -- 区域填充 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagefill() 在 image 图像的坐标 x，y（图像左上角为 0, 0）处用 color 颜色执行区域填充（即与 x, y 点颜色相同且相邻的点都会被填充）。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ($iinfo[2]) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1:&amp;nbsp;&amp;nbsp;  //1 = GIF &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $simage =imagecreatefromgif($destination); //magecreatefromgif -- 从 GIF 文件或 URL 新建一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecreatefromgif() 返回一图像标识符，代表了从给定的文件名取得的图像。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2:&amp;nbsp;&amp;nbsp;  //2 = JPG &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $simage =imagecreatefromjpeg($destination); //imagecreatefromjpeg -- 从 JPEG 文件或 URL 新建一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecreatefromjpeg() 返回一图像标识符，代表了从给定的文件名取得的图像。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 3:&amp;nbsp;&amp;nbsp;  //3 = PNG &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $simage =imagecreatefrompng($destination);&amp;nbsp;&amp;nbsp; //imagecreatefrompng -- 从 PNG 文件或 URL 新建一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecreatefrompng() 返回一图像标识符，代表了从给定的文件名取得的图像。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 6:&amp;nbsp;&amp;nbsp;  //6 = BMP&amp;nbsp;&amp;nbsp; 是case 15:&amp;nbsp;&amp;nbsp; //15 = WBMP 好像才正确吧？ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $simage =imagecreatefromwbmp($destination);&amp;nbsp;&amp;nbsp; //imagecreatefromwbmp -- 从 WBMP 文件或 URL 新建一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagecreatefromwbmp() 返回一图像标识符，代表了从给定的文件名取得的图像。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default: &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die(&amp;quot;不支持的文件类型&amp;quot;); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool imagecopy ( resource dst_im, resource src_im, int  dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //将 src_im 图像中坐标从 src_x，src_y 开始，宽度为 src_w，高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int color ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagefilledrectangle -- 画一矩形并填充 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagefilledrectangle() 在 image 图像中画一个用 color 颜色填充了的矩形，其左上角坐标为 x1，y1，右下角坐标为 x2，y2。(0, 0) 是图像的最左上角。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch($watertype) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1:&amp;nbsp;&amp;nbsp;  //加水印字符串 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool imagestring ( resource image, int font, int x, int y, string s, int col ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagestring -- 水平地画一行字符串 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x，y 坐标处（这是字符串左上角坐标，整幅图像的左上角为 0，0）。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果 font 是 1，2，3，4 或 5，则使用内置字体。 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2:&amp;nbsp;&amp;nbsp;  //加水印图片 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $simage1 =imagecreatefromgif(&amp;quot;xplore.gif&amp;quot;); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //magecreatefromgif -- 从 GIF 文件或 URL 新建一图像 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagecopy($nimage,$simage1,0,0,0,0,85,15); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagedestroy($simage1); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagedestroy -- 销毁一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //语法：bool imagedestroy ( resource image ) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagedestroy() 释放与 image 关联的内存。 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; //以下开始覆盖原上传文件 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ($iinfo[2]) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1: &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagegif($nimage, $destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagejpeg($nimage, $destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagegif -- 以 GIF 格式将图像输出到浏览器或文件 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagejpeg -- 以 JPEG 格式将图像输出到浏览器或文件 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2: &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagejpeg($nimage, $destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 3: &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagepng($nimage, $destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagepng -- 以 PNG 格式将图像输出到浏览器或文件 &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 6: &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagewbmp($nimage, $destination);//imagewbmp -- 以 WBMP 格式将图像输出到浏览器或文件 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //imagejpeg($nimage, $destination); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagedestroy($nimage);////imagedestroy -- 销毁一图像 &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imagedestroy($simage); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($imgpreview==1) &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;&amp;lt;br&amp;gt;图片预览:&amp;lt;br&amp;gt;&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;&amp;lt;img src=\&amp;quot;&amp;quot;.$destination.&amp;quot;\&amp;quot;  width=&amp;quot;.($image_size[0]*$imgpreviewsize).&amp;quot;  height=&amp;quot;.($image_size[1]*$imgpreviewsize); &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot; alt=\&amp;quot;图片预览:\r文件名:&amp;quot;.$destination.&amp;quot;\r上传时间:\&amp;quot;&amp;gt;&amp;quot;; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt; } &lt;br&gt; ?&amp;gt;&lt;br&gt;&lt;br&gt;摘自：&lt;a href="http://hi.baidu.com/vipbressanon/blog/item/adf4514e63df4df2d72afc8e.html"&gt;http://hi.baidu.com/vipbressanon/blog/item/adf4514e63df4df2d72afc8e.html&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1369513704506202330-6125295859396398200?l=cbcfrank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cbcfrank.blogspot.com/feeds/6125295859396398200/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1369513704506202330&amp;postID=6125295859396398200' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6125295859396398200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1369513704506202330/posts/default/6125295859396398200'/><link rel='alternate' type='text/html' href='http://cbcfrank.blogspot.com/2010/12/php.html' title='php上传文件详解（转）'/><author><name>FRANK</name><uri>http://www.blogger.com/profile/17064600168093317181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1369513704506202330.post-8710568229268974976</id><published>2010-12-09T15:39:00.001+08:00</published><updated>2010-12-09T15:39:12.529+08:00</updated><title type='text'>实时股票数据接口（转）</title><content type='html'>&lt;p&gt;股票数据的获取目前有如下两种方法可以获取:&lt;br&gt;1. http/javascript接口取数据&lt;br&gt;2. web-service接口&lt;/p&gt; &lt;h2&gt;1.http/javascript接口取数据&lt;/h2&gt; &lt;p&gt;&lt;strong&gt;1.1Sina股票数据接口&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;以大秦铁路（股票代码：601006）为例，如果要获取它的最新行情，只需访问新浪的股票数据&lt;br&gt;接口：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://hq.sinajs.cn/list=sh601006"&gt;http://hq.sinajs.cn/list=sh601006&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;这个url会返回一串文本，例如：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;var hq_str_sh601006=&amp;quot;大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92, &lt;br&gt;22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,&lt;br&gt;&amp;nbsp;26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32&amp;quot;;&lt;/div&gt;  &lt;/div&gt; &lt;p&gt;这个字符串由许多数据拼接在一起，不同含义的数据用逗号隔开了，按照程序员的思路，顺序号从0开始。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;0：&amp;rdquo;大秦铁路&amp;rdquo;，股票名字；&lt;br&gt;1：&amp;rdquo;27.55″，今日开盘价；&lt;br&gt;2：&amp;rdquo;27.25″，昨日收盘价；&lt;br&gt;3：&amp;rdquo;26.91″，当前价格；&lt;br&gt;4：&amp;rdquo;27.55″，今日最高价；&lt;br&gt;5：&amp;rdquo;26.20″，今日最低价；&lt;br&gt;6：&amp;rdquo;26.91″，竞买价，即&amp;ldquo;买一&amp;rdquo;报价；&lt;br&gt;7：&amp;rdquo;26.92″，竞卖价，即&amp;ldquo;卖一&amp;rdquo;报价；&lt;br&gt;8：&amp;rdquo;22114263″，成交的股票数，由于股票交易以一百股为基本单位，所以在使用时，通常把该值除以一百；&lt;br&gt; 9：&amp;rdquo;589824680″，成交金额，单位为&amp;ldquo;元&amp;rdquo;，为了一目了然，通常以&amp;ldquo;万元&amp;rdquo;为成交金额的单位，所以通常把该值除以一万；&lt;br&gt;10：&amp;rdquo;4695″，&amp;ldquo;买一&amp;rdquo;申请4695股，即47手；&lt;br&gt;11：&amp;rdquo;26.91″，&amp;ldquo;买一&amp;rdquo;报价；&lt;br&gt;12：&amp;rdquo;57590″，&amp;ldquo;买二&amp;rdquo;&lt;br&gt;13：&amp;rdquo;26.90″，&amp;ldquo;买二&amp;rdquo;&lt;br&gt;14：&amp;rdquo;14700″，&amp;ldquo;买三&amp;rdquo;&lt;br&gt;15：&amp;rdquo;26.89″，&amp;ldquo;买三&amp;rdquo;&lt;br&gt;16：&amp;rdquo;14300″，&amp;ldquo;买四&amp;rdquo;&lt;br&gt;17：&amp;rdquo;26.88″，&amp;ldquo;买四&amp;rdquo;&lt;br&gt; 18：&amp;rdquo;15100″，&amp;ldquo;买五&amp;rdquo;&lt;br&gt;19：&amp;rdquo;26.87″，&amp;ldquo;买五&amp;rdquo;&lt;br&gt;20：&amp;rdquo;3100″，&amp;ldquo;卖一&amp;rdquo;申报3100股，即31手；&lt;br&gt;21：&amp;rdquo;26.92″，&amp;ldquo;卖一&amp;rdquo;报价&lt;br&gt;(22, 23), (24, 25), (26,27), (28, 29)分别为&amp;ldquo;卖二&amp;rdquo;至&amp;ldquo;卖四的情况&amp;rdquo;&lt;br&gt;30：&amp;rdquo;2008-01-11″，日期；&lt;br&gt;31：&amp;rdquo;15:05:32″，时间；&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;一个简单的JavaScript应用例子: &lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;span style="color: gray;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: blue;"&gt;script&lt;/span&gt;&lt;span style="color: gray;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;type&lt;/span&gt;&lt;span style="color: gray;"&gt;=&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: gray;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;src&lt;/span&gt;&lt;span style="color: gray;"&gt;=&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;a href="http://hq.sinajs.cn/list=sh601006"&gt;http://hq.sinajs.cn/list=sh601006&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: gray;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;charset&lt;/span&gt;&lt;span style="color: gray;"&gt;=&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;gb2312&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: red;"&gt;script&amp;gt;&lt;br&gt; &amp;lt;script type=&amp;quot;text&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: blue;"&gt;javascript&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; var elements=hq_str_sh601006.split(&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: gray;"&gt;,&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;document.write(&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: blue;"&gt;current&lt;/span&gt;&lt;span style="color: gray;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;price&lt;/span&gt;&lt;span style="color: gray;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: red;"&gt;+elements[3]);&lt;br&gt; &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;这段代码输出大秦铁路（股票代码：601006）的当前股价&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;current price:14.20&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;如果你要同时查询多个股票，那么在URL最后加上一个逗号，再加上股票代码就可以了；比如你要一次查询大秦铁路（601006）和大同煤业（601001）的行情，就这样使用URL：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://hq.sinajs.cn/list=sh601003,sh601001"&gt;http://hq.sinajs.cn/list=sh601003,sh601001&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;查询大盘指数，比如查询上证综合指数（000001）：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://hq.sinajs.cn/list=s_sh000001"&gt;http://hq.sinajs.cn/list=s_sh000001&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;服务器返回的数据为：&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;var hq_str_s_sh000001=&amp;quot;上证指数,3094.668,-128.073,-3.97,436653,5458126&amp;quot;;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;数据含义分别为：指数名称，当前点数，当前价格，涨跌率，成交量（手），成交额（万元）；&lt;/p&gt; &lt;p&gt;查询深圳成指数：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://hq.sinajs.cn/list=s_sz399001"&gt;http://hq.sinajs.cn/list=s_sz399001&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;对于股票的K线图，日线图等的获取可以通过请求&lt;a href="http://image.sinajs.cn/"&gt;http://image.sinajs.cn/&lt;/a&gt;&amp;hellip;./&amp;hellip;/*.gif此URL获取，其中*代表股票代码，详见如下：&lt;/p&gt; &lt;p&gt;查看日K线图：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://image.sinajs.cn/newchart/daily/n/sh601006.gif"&gt;http://image.sinajs.cn/newchart/daily/n/sh601006.gif&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://image.sinajs.cn/newchart/daily/n/sh601006.gif" alt="查看日K线图" title="实时股票数据接口大全"&gt;&lt;/p&gt; &lt;p&gt;分时线的查询：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://image.sinajs.cn/newchart/min/n/sh000001.gif"&gt;http://image.sinajs.cn/newchart/min/n/sh000001.gif&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://image.sinajs.cn/newchart/min/n/sh000001.gif" alt="分时线的查询" title="实时股票数据接口大全"&gt;&lt;/p&gt; &lt;p&gt;日K线查询：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://image.sinajs.cn/newchart/daily/n/sh000001.gif"&gt;http://image.sinajs.cn/newchart/daily/n/sh000001.gif&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://image.sinajs.cn/newchart/daily/n/sh000001.gif" alt="日K线查询" title="实时股票数据接口大全"&gt;&lt;/p&gt; &lt;p&gt;周K线查询：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://image.sinajs.cn/newchart/weekly/n/sh000001.gif"&gt;http://image.sinajs.cn/newchart/weekly/n/sh000001.gif&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://image.sinajs.cn/newchart/weekly/n/sh000001.gif" alt="周K线查询" title="实时股票数据接口大全"&gt;&lt;/p&gt; &lt;p&gt;月K线查询：&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://image.sinajs.cn/newchart/monthly/n/sh000001.gif"&gt;http://image.sinajs.cn/newchart/monthly/n/sh000001.gif&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://image.sinajs.cn/newchart/monthly/n/sh000001.gif" alt="月K线查询" title="实时股票数据接口大全"&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1.2 Baidu&amp;amp;Google的财经数据&lt;/strong&gt;&lt;br&gt;在baidu, google中搜索某只股票代码时，将会在头条显示此股票的相关信息，例如在google搜索601006时，&lt;br&gt;第一条搜索结果如下图：&lt;br&gt;通过点击左边的图片我们发现会将此图片链接到sina财经频道上，也就是说google股票数据的获取也是从sina获取。后经抓包分析，发现google也是采用1.1中介绍的接口。&lt;/p&gt; &lt;p&gt;Baidu的股票数据来自baidu的财经频道&lt;br&gt;&lt;a href="http://stock.baidu.com/"&gt;http://stock.baidu.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1.3 其他方式&lt;/strong&gt;&lt;br&gt;除了sina，baidu等网站提供股票信息外，其他网站也有类似的接口。我们分析了一款论坛上采用的股票插件，&lt;br&gt;其中有关于实时股票数据获取的介绍，详见如下代码，其中可以看到有些数据来自sina。&lt;br&gt;以下是ASP示例:&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&amp;lt;%&lt;br&gt;&amp;lsquo;==========================&lt;br&gt;&amp;lsquo; file: stock_getdata.asp&lt;br&gt;&amp;lsquo; version: 1.0.0&lt;br&gt;&amp;lsquo; copyright (c) &lt;a href="http://czie.com"&gt;czie.com&lt;/a&gt; all rights reserved.&lt;br&gt;&amp;lsquo; web: &lt;a href="http://www.czie.com"&gt;http://www.czie.com&lt;/a&gt;&lt;br&gt; &amp;lsquo;==========================&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function gethttp(rurl)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim xml&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; on error resume next&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set xml=server.createobject(&amp;quot;Microsoft.XMLHTTP&amp;quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xml.open &amp;quot;get&amp;quot;,rurl,false&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xml.send&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if not xml.readystate=4 or not xml.status=200 or err then gethttp=&amp;quot;&amp;quot;:exit function&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gethttp=xml.responsetext&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set xml=nothing&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end function&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function getstockdata(code)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lsquo;0=股票名称,1=开盘价格,2=昨收盘价格,3=当前价格,4=最高价,5=最低价,30,31=更新时间&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim checkcode,stockdata,stockdatasplit&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if len(code)&amp;lt;5 then stockdata=&amp;quot;0,0,0,0,0,0,0,0,0,0,0,0&amp;quot;:exit function&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; checkcode=mid(code,len(code)-5,1)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if int(checkcode)&amp;lt;=4 then&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stockdata=gethttp(&amp;quot;&lt;a href="http://hq.sinajs.cn/list=sz"&gt;http://hq.sinajs.cn/list=sz&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if not len(stockdata)=0 then stockdata=split(stockdata,chr(34))(1)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end if&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if int(checkcode)&amp;gt;=5 then&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stockdata=gethttp(&amp;quot;&lt;a href="http://hq.sinajs.cn/list=sh"&gt;http://hq.sinajs.cn/list=sh&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if not len(stockdata)=0 then stockdata=split(stockdata,chr(34))(1)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end if&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if len(stockdata)=0 then&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stockdata=&amp;quot;0,0,0,0,0,0,0,0,0,0,0,0&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stockdatasplit=split(stockdata,&amp;quot;,&amp;quot;)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;nbsp;  &amp;nbsp;stockdata=&amp;quot;&amp;quot;&amp;amp;exstock.checkstr(stockdatasplit(0))&amp;amp;&amp;quot;,&amp;quot;&amp;amp;stockdatasplit(1)&amp;amp;&amp;quot;,&amp;quot;&amp;amp;stockdatasplit(2)&amp;amp;&amp;quot;,&amp;quot;&amp;amp;stockdatasplit(3)&amp;amp;&amp;quot;,&amp;quot;&amp;amp;stockdatasplit(4)&amp;amp;&amp;quot;,&amp;quot;&amp;amp;stockdatasplit(5)&amp;amp;&amp;quot;,&amp;quot;&amp;amp;formatdatetime(&amp;quot;&amp;quot;&amp;amp;stockdatasplit(30)&amp;amp;&amp;quot;  &amp;quot;&amp;amp;stockdatasplit(31)&amp;amp;&amp;quot;&amp;quot;,0)&amp;amp;&amp;quot;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end if&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lsquo;0=股票名称,1=开盘价格,2=昨收盘价格,3=当前价格,4=最高价,5=最低价,6=更新时间&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockdata=stockdata&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end function&lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function getstockimg(code)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim rndnum,addnum,checkcode,imgsource&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if len(code)&amp;lt;5 then exit function&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; addnum=4&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; randomize:rndnum=cint(rnd*addnum)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select case rndnum&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 0&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=&amp;quot;&lt;a href="http://www.10jqka.com.cn/curve/kline/?code="&gt;http://www.10jqka.com.cn/curve/kline/?code=&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.10jqka.com.cn"&gt;http://www.10jqka.com.cn&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 1&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=&amp;quot;&lt;a href="http://stock.jrj.com.cn/htmdata/KLINE/"&gt;http://stock.jrj.com.cn/htmdata/KLINE/&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;.png&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://stock.jrj.com.cn"&gt;http://stock.jrj.com.cn&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 2&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; checkcode=mid(code,len(code)-5,1)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if int(checkcode)&amp;lt;=4 then&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=&amp;quot;&lt;a href="http://image.sinajs.cn/newchart/daily/n/sz"&gt;http://image.sinajs.cn/newchart/daily/n/sz&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;.gif&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end if&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if int(checkcode)&amp;gt;=5 then&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=&amp;quot;&lt;a href="http://image.sinajs.cn/newchart/daily/n/sh"&gt;http://image.sinajs.cn/newchart/daily/n/sh&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;.gif&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end if&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://finance.sina.com.cn"&gt;http://finance.sina.com.cn&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 3&lt;br&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  getstockimg=&amp;quot;&lt;a href="http://hq.gazxfe.com/stockchart/realline.chart"&gt;http://hq.gazxfe.com/stockchart/realline.chart&lt;/a&gt;?&amp;quot;&amp;amp;code&amp;amp;&amp;quot;&amp;amp;1003&amp;amp;SZ  500 330&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://hq.gazxfe.com"&gt;http://hq.gazxfe.com&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 4&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=&amp;quot;&lt;a href="http://chartse.stockstar.com/chartserver?code="&gt;http://chartse.stockstar.com/chartserver?code=&lt;/a&gt;&amp;quot;&amp;amp;code&amp;amp;&amp;quot;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.stockstar.com/"&gt;http://www.stockstar.com/&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end select&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getstockimg=split(&amp;quot;&amp;quot;&amp;amp;getstockimg&amp;amp;&amp;quot;||&amp;quot;&amp;amp;imgsource&amp;amp;&amp;quot;&amp;quot;,&amp;quot;||&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end function&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; function getastockimg()&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim rndnum,addnum,checkcode&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dim getastockimgb,imgsource&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; addnum=6&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; randomize:rndnum=cint(rnd*addnum)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select case rndnum&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 0&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=&amp;quot;&lt;a href="http://202.109.106.1/gifchartse/gif/000001.gif"&gt;http://202.109.106.1/gifchartse/gif/000001.gif&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimgb=&amp;quot;&lt;a href="http://202.109.106.1/gifchartse/gif/399001.gif"&gt;http://202.109.106.1/gifchartse/gif/399001.gif&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.stockstar.com/"&gt;http://www.stockstar.com/&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 1&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=&amp;quot;&lt;a href="http://money.163.com/special/100.gif?C39"&gt;http://money.163.com/special/100.gif?C39&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimgb=&amp;quot;&lt;a href="http://money.163.com/special/101.gif?HrS"&gt;http://money.163.com/special/101.gif?HrS&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.163.com"&gt;http://www.163.com&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 2&lt;br&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  getastockimg=&amp;quot;&lt;a href="http://www.10jqka.com.cn/curve/realtime/index2.php?code=1a0001&amp;amp;w=180&amp;amp;h=140"&gt;http://www.10jqka.com.cn/curve/realtime/index2.php?code=1a0001&amp;amp;w=180&amp;amp;h=140&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  getastockimgb=&amp;quot;&lt;a href="http://www.10jqka.com.cn/curve/realtime/index2.php?code=399001&amp;amp;w=180&amp;amp;h=140"&gt;http://www.10jqka.com.cn/curve/realtime/index2.php?code=399001&amp;amp;w=180&amp;amp;h=140&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.10jqka.com.cn"&gt;http://www.10jqka.com.cn&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 3&lt;br&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  getastockimg=&amp;quot;&lt;a href="http://chart.cnlist.com/stockchart/realline.chart?1a0001&amp;amp;1002&amp;amp;SZ"&gt;http://chart.cnlist.com/stockchart/realline.chart?1a0001&amp;amp;1002&amp;amp;SZ&lt;/a&gt;  180 140&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  getastockimgb=&amp;quot;&lt;a href="http://chart.cnlist.com/stockchart/realline.chart?399001&amp;amp;1002&amp;amp;SZ"&gt;http://chart.cnlist.com/stockchart/realline.chart?399001&amp;amp;1002&amp;amp;SZ&lt;/a&gt;  180 140&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://chart.cnlist.com/"&gt;http://chart.cnlist.com/&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 4&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=&amp;quot;&lt;a href="http://image.sinajs.cn/newchart/small/ish000001.gif?1189176558328"&gt;http://image.sinajs.cn/newchart/small/ish000001.gif?1189176558328&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimgb=&amp;quot;&lt;a href="http://image.sinajs.cn/newchart/small/isz399001.gif?1189176558328"&gt;http://image.sinajs.cn/newchart/small/isz399001.gif?1189176558328&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.sinajs.cn"&gt;http://www.sinajs.cn&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 5&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=&amp;quot;&lt;a href="http://218.1.72.66/cgi/pic/sh/realtime/JA000001164143.png"&gt;http://218.1.72.66/cgi/pic/sh/realtime/JA000001164143.png&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimgb=&amp;quot;&lt;a href="http://218.1.72.66/cgi/pic/sz/realtime/JA399001164143.png"&gt;http://218.1.72.66/cgi/pic/sz/realtime/JA399001164143.png&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.cnstock.com/"&gt;http://www.cnstock.com/&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 6&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=&amp;quot;&lt;a href="http://222.73.29.85/img/000001.png"&gt;http://222.73.29.85/img/000001.png&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimgb=&amp;quot;&lt;a href="http://222.73.29.85/img/399001.png"&gt;http://222.73.29.85/img/399001.png&lt;/a&gt;&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imgsource=&amp;quot;&lt;a href="http://www.eastmoney.com/"&gt;http://www.eastmoney.com/&lt;/a&gt;&amp;quot;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end select&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getastockimg=split(&amp;quot;&amp;quot;&amp;amp;getastockimg&amp;amp;&amp;quot;||&amp;quot;&amp;amp;getastockimgb&amp;amp;&amp;quot;||&amp;quot;&amp;amp;imgsource&amp;amp;&amp;quot;&amp;quot;,&amp;quot;||&amp;quot;)&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end function&lt;br&gt;%&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;2. web-service接口&lt;/h2&gt; &lt;p&gt;&lt;strong&gt;2.1 CHINAstock的web-service：&lt;/strong&gt;&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx"&gt;http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;中国股票行情数据 WEB 服务（支持深圳和上海股市的全部基金、债券和股票），数据即时更新。输出GIF分时走势图、日/周/月 K  线图、及时行情数据（股票名称、行情时间、最新价、昨收盘、今开盘、涨跌额、最低、最高、涨跌幅、成交量、成交额、竞买价、竞卖价、委比、买一 -  买五、卖一 - 卖五）。此WEB服务提供了如下几个接口：&lt;/p&gt; &lt;p&gt;2.1.1 getStockImageByCode&lt;br&gt;GET 股票GIF分时走势图&lt;br&gt;INput：theStockCode = 股票代号，如：sh000001&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;POST /WebServices/ChinaStockWebService.asmx HTTP/1.1&lt;br&gt;Host: &lt;a href="http://www.webxml.com.cn"&gt;www.webxml.com.cn&lt;/a&gt;&lt;br&gt;Content-Type: text/xml; charset=utf-8&lt;br&gt;Content-Length: length&lt;br&gt;SOAPAction: &amp;quot;&lt;a href="http://WebXml.com.cn/getStockImageByCode"&gt;http://WebXml.com.cn/getStockImageByCode&lt;/a&gt;&amp;quot;&lt;br&gt; &lt;br&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br&gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;soap:Body&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;getStockImageByCode xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;theStockCode&amp;gt;string&amp;lt;/theStockCode&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/getStockImageByCode&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/soap:Body&amp;gt;&lt;br&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Output：&lt;/p&gt; &lt;p&gt;2.1.2 getStockImageByteByCode&lt;br&gt;获得中国股票GIF分时走势图字节数组&lt;/p&gt; &lt;p&gt;INput：theStockCode = 股票代号，如：sh000001&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;POST /WebServices/ChinaStockWebService.asmx  HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;  charset=utf-8Content-Length: lengthSOAPAction:  &amp;quot;&lt;a href="http://WebXml.com.cn/getStockImageByteByCode"&gt;http://WebXml.com.cn/getStockImageByteByCode&lt;/a&gt;&amp;quot; &amp;lt;?xml version=&amp;quot;1.0&amp;quot;  encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp;  &amp;lt;soap:Body&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;getStockImageByteByCode  xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theStockCode&amp;gt;string&amp;lt;/theStockCode&amp;gt;&amp;nbsp; &amp;nbsp;  &amp;lt;/getStockImageByteByCode&amp;gt;&amp;nbsp;  &amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;返回的数据如下：&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;br&gt;R0lGODlhIQIsAfcAAAAAAAwLBxkGBQ4ODhAQEBsSChUVFS4TDB8eGQkA9koPCDAAzy4mFVgAp2UYC0IqEUYuBVwiDEAsI1QnFX8AgDU1NUozFlgxD6cBWVY5FnIwEmQ4Gc0AMlhDHPEADlVJMEpKSm1IHOUBWpY3FZMyVY9IGXRWIEFmWGNYUmpdPXJgHQB8HK9EGGBgX4lXIACoAHhkMyt4m4VkJtstbv8A&lt;/p&gt;  &lt;/blockquote&gt; &lt;p&gt;2.1.3 getStockImage_kByCode&lt;br&gt;直接获得中国股票GIF日/周/月 K 线图（545*300pixel/72dpi）&lt;br&gt;INPUT: theStockCode = 股票代号&lt;br&gt;theType = K 线图类型（D：日[默认]、W：周、M：月），&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;POST /WebServices/ChinaStockWebService.asmx  HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;  charset=utf-8Content-Length: lengthSOAPAction:  &amp;quot;&lt;a href="http://WebXml.com.cn/getStockImage_kByCode"&gt;http://WebXml.com.cn/getStockImage_kByCode&lt;/a&gt;&amp;quot; &amp;lt;?xml version=&amp;quot;1.0&amp;quot;  encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp;  &amp;lt;soap:Body&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;getStockImage_kByCode  xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theStockCode&amp;gt;string&amp;lt;/theStockCode&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theType&amp;gt;string&amp;lt;/theType&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;/getStockImage_kByCode&amp;gt;&amp;nbsp;  &amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;比如按照下图所示输入：&lt;br&gt;返回的结果就是周K线图：&lt;/p&gt; &lt;p&gt;2.1.4 getStockImage_kByteByCode&lt;br&gt;获得中国股票GIF日/周/月 K 线图字节数组&lt;br&gt;Input：theStockCode = 股票代号，如：sh000001&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;POST /WebServices/ChinaStockWebService.asmx  HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;  charset=utf-8Content-Length: lengthSOAPAction:  &amp;quot;&lt;a href="http://WebXml.com.cn/getStockImage_kByteByCode"&gt;http://WebXml.com.cn/getStockImage_kByteByCode&lt;/a&gt;&amp;quot; &amp;lt;?xml version=&amp;quot;1.0&amp;quot;  encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp;  &amp;lt;soap:Body&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;getStockImage_kByteByCode  xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theStockCode&amp;gt;string&amp;lt;/theStockCode&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theType&amp;gt;string&amp;lt;/theType&amp;gt;&amp;nbsp; &amp;nbsp;  &amp;lt;/getStockImage_kByteByCode&amp;gt;&amp;nbsp;  &amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;HTTP/1.1 200 OKContent-Type:  text/xml; charset=utf-8Content-Length: length &amp;lt;?xml version=&amp;quot;1.0&amp;quot;  encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp;  &amp;lt;soap:Body&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;getStockImage_kByteByCodeResponse  xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;getStockImage_kByteByCodeResult&amp;gt;base64Binary&amp;lt;/getStockImage_kByteByCodeResult&amp;gt;&amp;nbsp;  &amp;nbsp; &amp;lt;/getStockImage_kByteByCodeResponse&amp;gt;&amp;nbsp;  &amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;比如按照下图输入：&lt;br&gt;返回的结果就是周K线图字节数组&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;br&gt;R0lGODlhIQIsAfcAAAAAAAwLBxkGBQ4ODhAQEBsSChUVFS4TDB8eGQkA9koPCDAAzy4mFVgAp2UYC0IqEUYuBVwiDEAsI1QnFX8AgDU1NUozFlgxD6cBWVY5FnIwEmQ4Gc0AMlhDHPEADlVJMEpKSm1IHOUBWpY3FZMyVY9IGXRWIEFmWGNYUmpdPXJgHQB8HK9EGGBgX4lXIACoAHhkMyt4m4VkJtstbv8A&lt;/p&gt;  &lt;/blockquote&gt; &lt;p&gt;2.1.5 getStockInfoByCode&lt;br&gt;获得中国股票及时行情&lt;br&gt;input：theStockCode = 股票代号&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;POST /WebServices/ChinaStockWebService.asmx  HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;  charset=utf-8Content-Length: lengthSOAPAction:  &amp;quot;&lt;a href="http://WebXml.com.cn/getStockInfoByCode"&gt;http://WebXml.com.cn/getStockInfoByCode&lt;/a&gt;&amp;quot; &amp;lt;?xml version=&amp;quot;1.0&amp;quot;  encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;soap:Envelope  xmlns:xsi=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;  xmlns:xsd=&amp;quot;&lt;a href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/a&gt;&amp;quot;  xmlns:soap=&amp;quot;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp;  &amp;lt;soap:Body&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;getStockInfoByCode  xmlns=&amp;quot;&lt;a href="http://WebXml.com.cn/"&gt;http://WebXml.com.cn/&lt;/a&gt;&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;theStockCode&amp;gt;string&amp;lt;/theStockCode&amp;gt;&amp;nbsp; &amp;nbsp;  &amp;lt;/getStockInfoByCode&amp;gt;&amp;nbsp; &amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;返回的值一个一维字符串数组  String(24)，结构为：String(0)股票代号、String(1)股票名称、String(2)行情时间、String(3)最新价 （元）、String(4)昨收盘（元）、String(5)今开盘（元）、String(6)涨跌额（元）、String(7)最低（元）、 String(8)最高（元）、String(9)涨跌幅（%）、String(10)成交量（手）、String(11)成交额（万元）、 String(12)竞买价（元）、String(13)竞卖价（元）、String(14)委比（%）、String(15)-String(19)买 一 - 买五（元）/手、String(20)-String(24)卖一 - 卖五（元）/手。&lt;/p&gt; &lt;p&gt;Web service的方法类似于现在concurrent项目的DBWS数据的获取，都是通过SOAP协议向DBWS服务器获取相关的数据。&lt;/p&gt; &lt;p&gt;利用雅虎查中国股票&lt;/p&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://quote.yahoo.com/d/quotes.csv?s=MSFT&amp;amp;f=slc1wop"&gt;http://quote.yahoo.com/d/quotes.csv?s=MSFT&amp;amp;f=slc1wop&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;返回微软的股票价格&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;quot;MSFT&amp;quot;,&amp;quot;4:00pm - &lt;b&gt;30.70&lt;/b&gt;&amp;quot;,+1.04,&amp;quot;21.46 - 30.75&amp;quot;,29.77,29.66&lt;/p&gt; &lt;/blockquote&gt; &lt;div class="hl-surround"&gt; &lt;div class="hl-main"&gt;&lt;a href="http://quote.yahoo.com/d/quotes.csv?s=000969.SZ&amp;amp;f=slc1wop"&gt;http://quote.yahoo.com/d/quotes.csv?s=000969.SZ&amp;amp;f=slc1wop&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;这个返回安泰科技的，&lt;strong&gt;一般有半个小时的延迟&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;但是s=&lt;a href="http://000969.sz"&gt;000969.sz&lt;/a&gt; 这个后面的sz是深圳的意思, 沪市是SS后缀&lt;/p&gt;---------------------------------------------------------------------&lt;br&gt;摘自：&lt;a href="http://www.cnblogs.com/tuyile006/archive/2009/07/13/1522517.html"&gt;http://www.cnblogs.com/tuyile006/archive/2009/07/13/1522517.html&lt;/a&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercon
