如何在GAE上github托管静态网页站点

VS 2005环境下生成静态lib库及调用方法
发布时间: 9:47:42
编辑:www.fx114.net
本篇文章主要介绍了"VS 2005环境下生成静态lib库及调用方法",主要涉及到VS 2005环境下生成静态lib库及调用方法方面的内容,对于VS 2005环境下生成静态lib库及调用方法感兴趣的同学可以参考一下。
VS 2005环境下生成静态lib库及调用方法
生成lib方法:
新建一个空项目,建一个头文件如Test.h
#pragma once
#ifdef __cplusplus
extern "C" {
int GetMin(int a, int b);
#ifdef __cplusplus
//其实只要&int&GetMin(int&a,&int&b);这么一句语言也会通过,其他的语句仅仅表明一个头文件在很多情况下并不是这么简单的,会有很多的定义
新建一个源文件如Test.cpp
#include "Test.h"
int GetMin(int a, int b)
return (a & b) ? a :
//这里定义一个两者取较小值的函数
选择配置属性-&常规,配置类型选&静态库(.lib)&, 确定后再编译,这时会在工程所在文件的debug文件夹下产生一个.lib的静态链接库。至此,生成工作完成。
调用lib方法:
调用方法有两种:
第一种:项目设置中引用,在项目的属性中设置。
第二种:在代码中使用&#progma comment(lib,"lib文件名");
这里介绍第一种方法。
右键单击项目,有三个地方需要添加lib库的目录和头文件的目录。
右键单击项目&&属性&&配置属性&&C/C++&&常规&&附加包含目录
在其中填入头文件所在的目录,可以是绝对路径,也可以相对路径(&..&两个点表示上一层目录,&.&一个点表示同级目录,这是相对你工程所在的目录而言的)
右键单击项目&&属性&&配置属性&&链接器&&常规&&附加库目录
在其中填入lib库的目录,也可以是相对或绝对路径。
右键单击项目&&属性&&配置属性&&链接器&&输入&&附加依赖项
在其中填入lib库的名称,如:Test.lib
新建一个控制台应用程序进行测试
#include "stdafx.h"
#include "../../Test/Test/Test.h" //注意:这里要include进头文件并且指明路径,或者你可以把头文件直接考到你的工程目录下,并在工程的头文件下把.h文件包含进来,这样只要用 #include &Test.h&就可以
#include "iostream"
int main()
int a = 11, b = 12;
c = GetMin(a, b);
本文标题:
本页链接:怎样在Github上托管开源代码库
  大家好,今天我们要学习一下怎样在
提供的仓库中托管开源软件源代码。GitHub 是一个基于 web 的 Git 仓库托管服务,提供基于 git 的分布式版本控制和源代码管理(SCM)功能,并加入了自身的特点。它给开源项目和私有项目提供了一个互相协作的工作区、代码预览和代码管理功能。不像 Git 是一个完完全全的命令行工具,GitHub 提供了一个基于 web 的图形化界面和桌面,也整合了手机操作。GitHub 同时提供了私有库付费计划和通常用来管理开源软件项目的免费账号。  这是一种快速灵活,基于 web 的托管服务,它使用方便,管理分布式版本控制系统也是相当容易,任何人都能将他们的软件源代码托管到 github,让全球各地数以百万计的人可以使用它、参与贡献、共享它、进行问题跟踪以及更多的用途。这里有一些简单快速地托管软件源代码的方法。  1. 创建一个新的 Github 账号  首先,打开你最喜欢的浏览器并访问 github,首页页面如下所示。  现在,首页打开之后,请填写一个新的 github 账号用于注册。  输入注册所需的有效信息之后,你会被转到计划选择的步骤。在这个页面上有 5 种计划,我们可以根据需要来选择,这里我们要选择免费计划。所以,我们点击选择 Free 计划并完成注册。如果我们接下去还打算创建一个组织,那我们需要勾选“Help me setup an organization next”。  2. 创建一个新的库  成功注册新账号或登录上 Github 之后,我们需要创建一个新的库来开始我们的征程。  点击位于顶部靠右账号 id 旁边的(+)按钮,然后点击“New Repository”。  点击创建一个新的库之后,我们进入了填写所需信息的页面。  填写好信息之后,我们点击绿色的“Create repository”按钮。  这些步骤都做完之后,我们将看到类似于下面这张图的页面。  3. 上传一个已有项目  如果我们想在 Github 上分享我们的项目,我们自然要把代码推上我们创建的库中。想要这样的话,我们首先要在我们的 Linux 机器上安装 git。如果我在机器上运行的是 Ubuntu 14.04 LTS,我需要运行apt工具来安装它。$ sudo apt-get install git  现在 git 已经准备就绪,我们要上传代码了。  注意:为了避免错误,不要在初始化的新库中包含README、license 或 gitignore 等文件,你可以在项目推送到 Github 上之后再添加它们。  在终端上,我们需要切换当前工作目录为你的本地项目的目录,然后将其初始化为 Git 库。$ git init  接着我们添加新的本地库里中的文件,作为我们的首次提交内容。$ git add .  现在我们就提交我们在本地库所添加的文件。$ git commit -m 'First commit'  在终端上,添加远程库的 URL 地址,以便我们的本地库推送到远程。$ git remote add origin 远程库的 URL$ git remote -v  注意:请确保将上述“远程库的 URL”替换成了你自己的远程库的 URL。  现在,要将我们的本地库的改变推送至 GitHub 的版本库中,我们需要运行以下命令,并且输入所需的用户名和密码。$ git push origin master  克隆一个库  如果我们想用一条简单地命令从 github 上下载代码库至本机上,我们可以用 git clone 命令,该命令将会从远程库中克隆最新的目录。$ git clone /aruntechgeek/linspeed.git  请把以上这条 URL 地址更改成你想要克隆的地址。  推送改动  如果我们对我们的代码做了更改并想把它们推送至我们的远程库中,我们应该在该目录下运行以下命令。$ git add .$ git commit -m "Updating"$ git push  结论  啊哈!我们已经成功地将我们的项目源代码托管到 Github 的库中了。Github 是快速灵活的基于 web 的托管服务,分布式版本控制系统使用起来方便容易。数百万个非常棒的开源项目驻扎在 github 上。所以,如果你有任何问题、建议或反馈,请在评论中告诉我们。谢谢大家!好好享受吧
关注微信公众号
扫一扫关注微信公众号原来跟着书把express搭上了,现在一系列逻辑功能都写得差不多了,开始研究jade和样式
需要用到外部css,发现express的配置有问题,这次不乱翻博客了,解答太杂,直接上官方:
以下内容引自:
利用 Express 托管静态文件
通过 Express 内置的&express.static&可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。
将静态资源文件所在的目录作为参数传递给&express.static&中间件就可以提供静态资源文件的访问了。例如,假设在&public&目录放置了图片、CSS 和 JavaScript 文件,你就可以:
app.use(express.static('public'));
现在,public&目录下面的文件就可以访问了。 **注意: 这里的&public&指的要托管的文件夹,你托管后,在jade页面上就可以拖过link和script引入这个目录下的文件夹里的文件了,
不指定的话,express是找不到外部文件的,不管你的相对路径写得对不对,这段话是给跟我一样的小白的提示,上道的兄弟可以无视。
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html
&&&所有文件的路径都是相对于存放目录的,因此,存放静态文件的目录名不会出现在 URL 中。&
如果你的静态资源存放在多个目录下面,你可以多次调用&express.static&中间件: **注意:这个功能比较灵活了,可以托管不同的目录的到自己的服务里
app.use(express.static('public'));
app.use(express.static('files'));
访问静态资源文件时,express.static&中间件会根据目录添加的顺序查找所需的文件。
如果你希望所有通过&express.static&访问的文件都存放在一个&虚拟(virtual)&目录(即目录根本不存在)下面,可以通过为静态资源目录的方式来实现,如下所示:
**注意:这是以上两个挂载功能的最高级形式,挂在虚拟的目录下,就跟express的路由的概念挂钩,只有在这几个路由时才能访问这些静态资源吧
app.use('/static', express.static('public'));
现在,你就爱可以通过带有 &/static& 前缀的地址来访问&public&目录下面的文件了。
http://localhost:3000/static/images/kitten.jpg
http://localhost:3000/static/css/style.css
http://localhost:3000/static/js/app.js
http://localhost:3000/static/images/bg.png
http://localhost:3000/static/hello.html
阅读(...) 评论()8318人阅读
百度云存储
欢迎访问的我个人网站:&&&&想建设个人网站的朋友可以找我聊。无门槛,就能永远自己的永久域名和服务器空间,完全免费哦
以前开发的网站苦于没有云服务器,网站没地方挂,现在百度出了云存储和应用引擎,可以让开发者免费上传动态站点和静态站点。这篇文章,我准备用云存储的方式,存储用户的静态网站,开发者可通过将静态页面上传至云存储空间中,并将其访问权限设置为公开读,即可实现静态网站的效果。文章底部有源码和项目下载。
一、实现效果
本地文件夹 &
上传成后百度云存储的文件 : &直接点击index.html 就能浏览这个网页了
这是我上传的站点 :
js文件夹中的文件全部为公开
百度云存储,即BCS(Baidu Cloud Storage),提供object网络存储服务,旨在利用百度在分布式以及网络方面的优势为开发者提供安全、简单、高效的存储服务。
百度云存储提供了一系列简单易用的REST API接口、SDK、工具和方案,使得开发者可以在任何时间、任何地点存储任何类型的数据。通过使用百度云存储服务,开发者可以轻松地开发出扩展性强、稳定性好、安全快速的分布式网络服务;通过使用云存储服务提供的API、SDK及管理平台,开发者也可以迅速开发出适合各种业务的网络程序。
百度云存储可以支持文本、多媒体、二进制等任何类型的数据,支持签名认证及ACL权限设置进行资源访问控制,开发者可以通过管理控制台直接进行页面上传、下载或通过REST API、Shell Tool、SDK、curl等方式实现上传、下载。
百度云存储服务主要提供以下功能供开发者使用:
支持任何类型数据的上传和下载
文本、多媒体、日志、二进制等类型数据
强大的元信息机制
开发者可以使用通用的和自定义的元信息机制来定义资源属性。
云存储支持0-2T的单文件数据容量,同时对object的个数没有限制;云存储提供superfile接口,可以实现2T超大文件的上传和下载。
分片上传、断点下载功能。
该功能在网络不稳定的环境下具有非常好的表现。
Restful风格的HTTP接口和多语言SDK及工具,可极大提高开发者的开发效率。
了解RESTful的相关信息,可参考。
签名认证方案
基于公钥和密钥的认证方案可适应灵活的业务需求。
强大的ACL权限控制
开发者可通过ACL设置资源的权限(公开或私有),也可授权特定用户具有特定权限。
功能完善的管理平台
开发者可通过管理中心对所有资源进行统一管理。
静态网页托管
开发者可通过将静态页面上传至云存储空间中,并将其访问权限设置为公开读,即可实现静态网站的效果。
第九点非常酷,网站设计师可以把网页托管到百度云了
三、 基本使用
本文主要面向百度云存储服务的开发者,开发者可通过此文学习如何使用百度云存储进行开发。
使用百度云存储服务进行开发的具体步骤如下:
1.&。2.&3.&4.&5.&
使用云存储服务,需要首先创建应用并获取应用密钥对。操作步骤如下:
1. 在创建一个应用
2. 在应用基本信息页,获取相应的“API key 及 Secret Key”
创建Bucket,可通过以下三种方式来实现:
1. 通过创建bucket。可以把bucket看成是命名空间,您的数据就存储在这个bucket里面。2. 通过调用 REST API接口&实现3. 通过SDK,调用相关接口来实现
使用云存储服务上传文件有以下四种途径:
1. 使用Shell Tool上传2. 使用SDK进行上传3. 直接使用curl命令上传4. 通过云存储管理控制台上传
云存储bucket可以看成是命名空间,其名称全局唯一,如果某个名称已创建,则其他开发者将无法再创建相同名称的bucket;开发者上传的任何数据必须是属于某个bucket。上传任何数据之前需先确认是否已经创建bucket。 有关bucket的命名限制,请参考。
创建bucket有以下两种方式:
通过创建通过使用&API创建
Object是BCS中的基本存储实体,由Key(键)、Data(数据)及MetaData (元数据)组成。
Key(键):
指object的唯一标识,其命名必须以“/”开头,有关object的命名限制,请参考。
如: mystorage/test/我的文件.txt
Data(数据):
object可支持文本、多媒体、二进制等任何类型的数据,开发者可以利用object API实现上传、下载及获取object列表的功能。
普通文件的文件大小最大为2GB, 对于更大的超大文件(最大支持2TB)可通过&API来实现。
MetaData (元数据):
存储object的相关属性的描述性信息,为 k-v 组合。
三、 java代码实现
我们要实现批量文件上传和权限的控制。请看下文
首先在这里下载 SDK 和开发文档&
在Sample.java中输入自己的accessKey和&secretKey ,就能运行其中的基本实例了。
上传文件到云存储的函数
* @param baiduBCS
* @param bucket
* @param object
上传到仓库中的对象
* @param destFile
本地需要上传的文件对象
* @param contentType
public static void putObjectByFile(BaiduBCS baiduBCS,String bucket,String object,File destFile,String contentType) {
PutObjectRequest request = new PutObjectRequest(bucket, object, destFile);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(contentType);
request.setMetadata(metadata);
BaiduBCSResponse&ObjectMetadata& response = baiduBCS.putObject(request);
ObjectMetadata objectMetadata = response.getResult();
(&x-bs-request-id: & + response.getRequestId());
(objectMetadata);
这里涉及到三个问题,
第一个是文件类型的获取, 就是ContentType,我们知道 .html文件 的文件类型是 &text/html &.css的文件类型是 text/css我们需要指定文件类型。
第二个是文件的权限,文件上传后,默认的权限是私有的,无法访问。&
第三个问题,一次只能上传一个文件,如果我有一个文件夹需要上传呢,这样操作不方便。
所以有了以下的解决办法。遍历文件批量上传,并且控制文件的权限
权限控制:
& & &* 修改文件的权限
& & &* @param baiduBCS &存储上下文
& & &* @param bucket 存储仓库
& & &* @param object 文件对象
& & &* @param acl 控制权限 &
& & public static void putObjectPolicyByX_BS_ACL(BaiduBCS baiduBCS,String bucket ,String object,X_BS_ACL acl) {
& & & & baiduBCS.putObjectPolicy(bucket, object, acl);
ACL的取值有:Private, PublicRead, PublicWrite, PublicReadWrite, PublicC
默认为private,PublicRead,或者PublicReadWrite &就能公开访问了。
下载完sdk后,就开始动手吧
在项目中引入百度的sdk :&bcs-sdk-java_1.4.5.jar
mavne 文件:
&?xml version=&1.0& encoding=&UTF-8&?&
&project xmlns=&http://maven.apache.org/POM/4.0.0&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&baiduBCS&/groupId&
&artifactId&baiduBCS&/artifactId&
&version&1.0-SNAPSHOT&/version&
&dependencies&
&dependency&
&groupId&log4j&/groupId&
&artifactId&log4j&/artifactId&
&version&1.2.17&/version&
&/dependency&
&dependency&
&groupId&net.sf.flexjson&/groupId&
&artifactId&flexjson&/artifactId&
&version&2.1&/version&
&/dependency&
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpclient&/artifactId&
&version&4.3.1&/version&
&/dependency&
&dependency&
&groupId&commons-codec&/groupId&
&artifactId&commons-codec&/artifactId&
&version&1.8&/version&
&/dependency&
&/dependencies&
&/project&
批量上传的源码:
import com.baidu.inf.iis.bcs.BaiduBCS;
import com.baidu.inf.iis.bcs.model.X_BS_ACL;
import java.io.F
import java.io.IOE
import java.io.InputS
import java.util.ArrayL
import java.util.P
* Created with IntelliJ IDEA.
* User: liu.xing
* Date: 14-1-20
* Time: 下午7:23
* coding for fun and coding my life!
public class MultipUpload {
static String filePrefix = &E:/站点/innos&;
static int len = filePrefix.length();
private static ArrayList filelist = new ArrayList();
static String bucket = &innosrom&;
//文件仓库名
static String bcsDir = &/webDesgin/01/&;
//文件存放目录
static String object = &&;
//文件对象本身
static BaiduBCS
public static void main(String[] args) {
MultipUpload mu = new MultipUpload();
long a = System.currentTimeMillis();
pro = mu.loadFileContentType();
//载入文件格式对应的文档类型
bcs = Sample.init();
//初始化百度云存储环境
mu.refreshFileList(filePrefix);
//遍历文件
System.out.println(System.currentTimeMillis() - a);
* 遍历文件
* @param strPath 文件夹路径
public void refreshFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
for (int i = 0; i & files. i++) {
String absPath = files[i].getAbsolutePath();
if (files[i].isDirectory()) {
refreshFileList(absPath);
String strFileName = absPath.replace(&\\&, &/&);
object = bcsDir + strFileName.substring(len + 1);
String contentType = getContentType(object,pro);
System.out.println(object+&\t&+contentType);
Sample.putObjectByFile(bcs, bucket, object, new File(absPath),contentType);
Sample.putObjectPolicyByX_BS_ACL(bcs, bucket, object, X_BS_ACL.PublicReadWrite);
//deleteAll(bcs,object);
* 根据文件名获取ContentType
* @param object
* @param pro
contentType-file 对应的 Properties对象
ContentType
private String getContentType(String object,Properties pro) {
if(object.contains(&.&)){
int index = object.lastIndexOf(&.&);
String suffix = object.substring(index+1);
//获取文件后缀
Object contentType = pro.get(suffix);
if(contentType != null)
return contentType.toString();
return &text/html&;
public void deleteAll(BaiduBCS bcs,String object){
Sample.deleteObject(bcs,object);
* 载入ContentType 文件
public Properties loadFileContentType(){
InputStream is = getClass().getClassLoader().getSystemResourceAsStream(&contentType.proerties&);
Properties pro = new Properties();
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
Smaple demo:
/***************************************************************************
* Copyright (c) , Inc. All Rights Reserved
**************************************************************************/
import java.io.*;
import java.net.URISyntaxE
import java.util.ArrayL
import java.util.L
import com.baidu.inf.iis.bcs.model.*;
import mons.logging.L
import mons.logging.LogF
import com.baidu.inf.iis.bcs.BaiduBCS;
import com.baidu.inf.iis.bcs.auth.BCSC
import com.baidu.inf.iis.bcs.auth.BCSSignC
import com.baidu.inf.iis.bcs.http.HttpMethodN
import com.baidu.inf.iis.bcs.policy.P
import com.baidu.inf.iis.bcs.policy.PolicyA
import com.baidu.inf.iis.bcs.policy.PolicyE
import com.baidu.inf.iis.bcs.policy.S
import com.baidu.inf.iis.bcs.request.CreateBucketR
import com.baidu.inf.iis.bcs.request.GenerateUrlR
import com.baidu.inf.iis.bcs.request.GetObjectR
import com.baidu.inf.iis.bcs.request.ListBucketR
import com.baidu.inf.iis.bcs.request.ListObjectR
import com.baidu.inf.iis.bcs.request.PutObjectR
import com.baidu.inf.iis.bcs.request.PutSuperfileR
import com.baidu.inf.iis.bcs.response.BaiduBCSR
@SuppressWarnings(&unused&)
public class Sample {
private static final Log log = LogFactory.getLog(Sample.class);
// ----------------------------------------
static String host = &&;
static String accessKey = &您自己的私钥&;
static String secretKey = &您自己的密钥&;
static String bucket = &innosrom&;
// ----------------------------------------
static String object = &/index.jsp&;
static File destFile = new File(&C:\\BCS\\up.txt&);
static File saveFile = new File(&C:\\BCS\\download.txt&);
public static BaiduBCS init(){
BCSCredentials credentials = new BCSCredentials(accessKey, secretKey);
BaiduBCS baiduBCS = new BaiduBCS(credentials, host);
// baiduBCS.setDefaultEncoding(&GBK&);
baiduBCS.setDefaultEncoding(&UTF-8&); // Default UTF-8
* @param args
* @throws java.net.URISyntaxException
* @throws java.io.IOException
public static void main(String[] args) throws URISyntaxException, IOException {
// PropertyConfigurator.configure(&log4j.properties&);
BCSCredentials credentials = new BCSCredentials(accessKey, secretKey);
BaiduBCS baiduBCS = new BaiduBCS(credentials, host);
// baiduBCS.setDefaultEncoding(&GBK&);
baiduBCS.setDefaultEncoding(&UTF-8&); // Default UTF-8
// -------------bucket-------------
// listBucket(baiduBCS);
// createBucket(baiduBCS);
// deleteBucket(baiduBCS);
// getBucketPolicy(baiduBCS);
// putBucketPolicyByPolicy(baiduBCS);
// putBucketPolicyByX_BS_ACL(baiduBCS, X_BS_ACL.PublicControl);
// listObject(baiduBCS);
// ------------object-------------
//putObjectByFile(baiduBCS);
//putObjectByInputStream(baiduBCS);
//getObjectWithDestFile(baiduBCS);
// putSuperfile(baiduBCS);
//deleteObject(baiduBCS);
//getObjectMetadata(baiduBCS);
// setObjectMetadata(baiduBCS);
// copyObject(baiduBCS, bucket, object + &_copy& +
// (System.currentTimeMillis()));
//getObjectPolicy(baiduBCS);
//putObjectPolicyByPolicy(baiduBCS);
putObjectPolicyByX_BS_ACL(baiduBCS, X_BS_ACL.PublicReadWrite);
// ------------common------------------
//generateUrl( baiduBCS);
} catch (BCSServiceException e) {
log.warn(&Bcs return:& + e.getBcsErrorCode() + &, & + e.getBcsErrorMessage() + &, RequestId=& + e.getRequestId());
} catch (BCSClientException e) {
e.printStackTrace();
public static void generateUrl(BaiduBCS baiduBCS) {
GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, bucket, object);
generateUrlRequest.setBcsSignCondition(new BCSSignCondition());
generateUrlRequest.getBcsSignCondition().setIp(&*&);
//generateUrlRequest.getBcsSignCondition().setTime(123455L);
//generateUrlRequest.getBcsSignCondition().setSize(123455L);
System.out.println(baiduBCS.generateUrl(generateUrlRequest));
public static void copyObject(BaiduBCS baiduBCS, String destBucket, String destObject) {
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(&image/jpeg&);
baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject), objectMetadata);
baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject), null);
baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject));
private static void createBucket(BaiduBCS baiduBCS) {
// baiduBCS.createBucket(bucket);
baiduBCS.createBucket(new CreateBucketRequest(bucket, X_BS_ACL.PublicRead));
private static void deleteBucket(BaiduBCS baiduBCS) {
baiduBCS.deleteBucket(bucket);
public static void deleteObject(BaiduBCS baiduBCS,String object) {
Empty result = baiduBCS.deleteObject(bucket, object).getResult();
private static void getBucketPolicy(BaiduBCS baiduBCS) {
BaiduBCSResponse&Policy& response = baiduBCS.getBucketPolicy(bucket);
(&After analyze: & + response.getResult().toJson());
(&Origianal str: & + response.getResult().getOriginalJsonStr());
public static void getObjectMetadata(BaiduBCS baiduBCS) {
ObjectMetadata objectMetadata = baiduBCS.getObjectMetadata(bucket, object).getResult();
(objectMetadata);
private static void getObjectPolicy(BaiduBCS baiduBCS) {
BaiduBCSResponse&Policy& response = baiduBCS.getObjectPolicy(bucket, object);
(&After analyze: & + response.getResult().toJson());
(&Origianal str: & + response.getResult().getOriginalJsonStr());
private static void getObjectWithDestFile(BaiduBCS baiduBCS) {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, object);
baiduBCS.getObject(getObjectRequest, saveFile);
private static void listBucket(BaiduBCS baiduBCS) {
ListBucketRequest listBucketRequest = new ListBucketRequest();
BaiduBCSResponse&List&BucketSummary&& response = baiduBCS.listBucket(listBucketRequest);
for (BucketSummary bucket : response.getResult()) {
private static void listObject(BaiduBCS baiduBCS) {
ListObjectRequest listObjectRequest = new ListObjectRequest(bucket);
listObjectRequest.setStart(0);
listObjectRequest.setLimit(20);
// ------------------by dir
// prefix must start with '/' and end with '/'
// listObjectRequest.setPrefix(&/1/&);
// listObjectRequest.setListModel(2);
// ------------------only object
// prefix must start with '/'
// listObjectRequest.setPrefix(&/1/&);
BaiduBCSResponse&ObjectListing& response = baiduBCS.listObject(listObjectRequest);
(&we get [& + response.getResult().getObjectSummaries().size() + &] object record.&);
for (ObjectSummary os : response.getResult().getObjectSummaries()) {
(os.toString());
private static void putBucketPolicyByPolicy(BaiduBCS baiduBCS) {
Policy policy = new Policy();
Statement st1 = new Statement();
st1.addAction(PolicyAction.all).addAction(PolicyAction.get_object);
st1.addUser(&zhengkan&).addUser(&zhangyong01&);
st1.addResource(bucket + &/111&).addResource(bucket + &/111&);
st1.setEffect(PolicyEffect.allow);
policy.addStatements(st1);
baiduBCS.putBucketPolicy(bucket, policy);
private static void putBucketPolicyByX_BS_ACL(BaiduBCS baiduBCS, X_BS_ACL acl) {
baiduBCS.putBucketPolicy(bucket, acl);
public static void putObjectByFile(BaiduBCS baiduBCS) {
PutObjectRequest request = new PutObjectRequest(bucket, object, destFile);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(&text/html&);
request.setMetadata(metadata);
BaiduBCSResponse&ObjectMetadata& response = baiduBCS.putObject(request);
ObjectMetadata objectMetadata = response.getResult();
(&x-bs-request-id: & + response.getRequestId());
(objectMetadata);
* @param baiduBCS
* @param bucket
* @param object
上传到仓库中的对象
* @param destFile
本地需要上传的文件对象
* @param contentType
public static void putObjectByFile(BaiduBCS baiduBCS,String bucket,String object,File destFile,String contentType) {
PutObjectRequest request = new PutObjectRequest(bucket, object, destFile);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(contentType);
request.setMetadata(metadata);
BaiduBCSResponse&ObjectMetadata& response = baiduBCS.putObject(request);
ObjectMetadata objectMetadata = response.getResult();
(&x-bs-request-id: & + response.getRequestId());
(objectMetadata);
public static void putObjectByInputStream(BaiduBCS baiduBCS) throws FileNotFoundException {
File file = createSampleFile();
InputStream fileContent = new FileInputStream(file);
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(&text/html&);
objectMetadata.setContentLength(file.length());
PutObjectRequest request = new PutObjectRequest(bucket, object, fileContent, objectMetadata);
ObjectMetadata result = baiduBCS.putObject(request).getResult();
private static void putObjectPolicyByPolicy(BaiduBCS baiduBCS) {
Policy policy = new Policy();
Statement st1 = new Statement();
st1.addAction(PolicyAction.all).addAction(PolicyAction.get_object);
st1.addUser(&zhengkan&).addUser(&zhangyong01&);
st1.addResource(bucket + object).addResource(bucket + object);
st1.setEffect(PolicyEffect.allow);
policy.addStatements(st1);
baiduBCS.putObjectPolicy(bucket, object, policy);
private static void putObjectPolicyByX_BS_ACL(BaiduBCS baiduBCS, X_BS_ACL acl) {
baiduBCS.putObjectPolicy(bucket, object, acl);
* 修改文件的权限
* @param baiduBCS
存储上下文
* @param bucket 存储仓库
* @param object 文件对象
* @param acl 控制权限
public static void putObjectPolicyByX_BS_ACL(BaiduBCS baiduBCS,String bucket ,String object,X_BS_ACL acl) {
baiduBCS.putObjectPolicy(bucket, object, acl);
public static void putSuperfile(BaiduBCS baiduBCS) {
List&SuperfileSubObject& subObjectList = new ArrayList&SuperfileSubObject&();
BaiduBCSResponse&ObjectMetadata& response1 = baiduBCS.putObject(bucket, object + &_part0&, createSampleFile());
subObjectList.add(new SuperfileSubObject(bucket, object + &_part0&, response1.getResult().getETag()));
BaiduBCSResponse&ObjectMetadata& response2 = baiduBCS.putObject(bucket, object + &_part1&, createSampleFile());
subObjectList.add(new SuperfileSubObject(bucket, object + &_part1&, response2.getResult().getETag()));
// put superfile
PutSuperfileRequest request = new PutSuperfileRequest(bucket, object + &_superfile&, subObjectList);
BaiduBCSResponse&ObjectMetadata& response = baiduBCS.putSuperfile(request);
ObjectMetadata objectMetadata = response.getResult();
(&x-bs-request-id: & + response.getRequestId());
(objectMetadata);
public static void setObjectMetadata(BaiduBCS baiduBCS) {
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(&text/html12&);
baiduBCS.setObjectMetadata(bucket, object, objectMetadata);
private static File createSampleFile() {
File file = File.createTempFile(&java-sdk-&, &.txt&);
file.deleteOnExit();
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write(&\n&);
writer.write(&\n&);
writer.write(&\n&);
writer.write(&\n&);
writer.write(&\n&);
writer.close();
} catch (IOException e) {
log.error(&tmp file create failed.&);
文件类型和后缀对应表&contentType.proerties
参考我的另外一篇文章:
源码下载地址:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:181213次
积分:2636
积分:2636
排名:第10806名
原创:65篇
转载:26篇
评论:65条
(1)(1)(2)(1)(2)(3)(2)(2)(4)(6)(6)(1)(1)(2)(5)(1)(7)(3)(2)(6)(1)(15)(12)(3)(4)(1)

我要回帖

更多关于 静态页面托管 的文章

 

随机推荐