百度云存储教程---免费建立自己的静态网站

欢迎訪问的我个人站点:点击打开链接--我的个人站点    想建设个人站点的朋友能够找我聊。无门槛,就能永远自己的永久域名和server空间,全然免费哦


曾经开发的站点苦于没有云server,站点没地方挂,如今百度出了云存储和应用引擎,能够让开发人员免费上传动态站点和静态站点。这篇文章,我准备用云存储的方式,存储用户的静态站点,开发人员可通过将静态页面上传至云存储空间中,并将其訪问权限设置为公开读,就可以实现静态站点的效果。文章底部有源代码和项目下载。


一、实现效果

本地目录

上传成后百度云存储的文件
:  直接点击index.html 就能浏览这个网页了

这是我上传的网站
:点击打开链接

js目录中的文件所有为公开

二、简单介绍

百度云存储,即BCS(Baidu Cloud
Storage),提供object网络存储服务,旨在利用百度在分布式以及网络方面的优势为开发人员提供安全、简单、高效的存储服务。

百度云存储提供了一系列简单易用的REST
API接口、SDK、工具和方案,使得开发人员能够在不论什么时间、不论什么地点存储不论什么类型的数据。通过使用百度云存储服务,开发人员能够轻松地开发出扩展性强、稳定性好、安全高速的分布式网络服务;通过使用云存储服务提供的API、SDK及管理平台,开发人员也能够迅速开发出适合各种业务的网络程序。

百度云存储能够支持文本、多媒体、二进制等不论什么类型的数据,支持签名认证及ACL权限设置进行资源訪问控制,开发人员能够通过管理控制台直接进行页面上传、下载或通过REST
API、Shell Tool、SDK、curl等方式实现上传、下载。

云存储功能

百度云存储服务主要提供下面功能供开发人员使用:



















































  功能 描写叙述
1 支持不论什么类型数据的上传和下载 文本、多媒体、日志、二进制等类型数据
2 强大的元信息机制 开发人员能够使用通用的和自己定义的元信息机制来定义资源属性。
3 超大容量 云存储支持0-2T的单文件数据容量,同一时候对object的个数没有限制;云存储提供superfile接口,能够实现2T超大文件的上传和下载。
4 分片上传、断点下载功能。 该功能在网络不稳定的环境下具有很好的表现。
5 Restful风格的HTTP接口多语言SDK工具,可极大提高开发人员的开发效率。 了解RESTful的相关信息,可參考http://en.wikipedia.org/wiki/Representational_State_Transfer
6 签名认证方案 基于公钥和密钥的认证方案可适应灵活的业务需求。
7 强大的ACL权限控制 开发人员可通过ACL设置资源的权限(公开或私有),也可授权特定用户具有特定权限。
8 功能完好的管理平台 开发人员可通过管理中心对全部资源进行统一管理。
9 静态网页托管 开发人员可通过将静态页面上传至云存储空间中,并将其訪问权限设置为公开读,就可以实现静态站点的效果。
第九点很酷,站点设计师能够把网页托管到百度云了

详见:http://developer.baidu.com/wiki/index.php?title=docs/cplat/bcs

三、 基本使用

概述

本文主要面向百度云存储服务的开发人员,开发人员可通过此文学习怎样使用百度云存储进行开发。

使用百度云存储服务进行开发的详细过程例如以下:



1. 注冊百度账号,并成为百度开发人员

2. #创建应用并获取密钥对(ak&sk)

3. #创建bucket

4. #上传文件

5. #权限设置

创建应用并获取密钥对(ak&sk)

使用云存储服务,须要首先创建应用并获取应用密钥对。操作过程例如以下:

1.
管理中心创建一个应用

2.
在应用基本信息页,获取对应的“API key 及 Secret Key”

创建bucket

创建Bucket,可通过下面三种方式来实现:


1.
通过云存储管理控制台创建bucket。能够把bucket看成是命名空间,您的数据就存储在这个bucket里面。

2.
通过调用 REST API接口 Put_Bucket实现

3.
通过SDK,调用相关接口来实现

上传文件

使用云存储服务上传文件有下面四种途径:


1.
使用Shell Tool上传

2.
使用SDK进行上传

3.
直接使用curl命令上传

4.
通过云存储管理控制台上传

bucket

云存储bucket能够看成是命名空间,其名称全局唯一,假设某个名称已创建,则其它开发人员将无法再创建同样名称的bucket;开发人员上传的不论什么数据必须是属于某个bucket。上传不论什么数据之前需先确认是否已经创建bucket。
有关bucket的命名限制,请參考#约束与限制。 创建bucket有下面两种方式:





object

Object是BCS中的基本存储实体,由Key(键)、Data(数据)及MetaData
(元数据)组成。



  • Key(键):

指object的唯一标识,其命名必须以“/”开头,有关object的命名限制,请參考#约束与限制。 如: mystorage/test/我的文件.txt



  • Data(数据):





object可支持文本、多媒体、二进制等不论什么类型的数据,开发人员能够利用object
API实现上传、下载及获取object列表的功能。

普通文件的文件大小最大为2GB,
对于更大的超大文件(最大支持2TB)可通过put superfile API来实现。



  • MetaData (元数据):



存储object的相关属性的描写叙述性信息,为 k-v 组合。

三、 java代码实现

我们要实现批量文件上传和权限的控制。请看下文

首先在这里下载 SDK 和开发文档 http://developer.baidu.com/wiki/index.php?title=docs/cplat/bcs/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();
log.info("x-bs-request-id: " + response.getRequestId());
log.info(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,
PublicControl;

默觉得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.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Properties;

/**
* 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 bcs;
static Properties pro;

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)
return;
for (int i = 0; i < files.length; i++) {
String absPath = files[i].getAbsolutePath();
if (files[i].isDirectory()) {
refreshFileList(absPath);
} else {
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对象
* @return 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 文件
* @return
*/
public Properties loadFileContentType(){
InputStream is = getClass().getClassLoader().getSystemResourceAsStream("contentType.proerties");
Properties pro = new Properties();
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
return pro;
}

}

Smaple demo:

/***************************************************************************
*
* Copyright (c) 2012 Baidu.com, Inc. All Rights Reserved
*
**************************************************************************/
import java.io.*;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import com.baidu.inf.iis.bcs.model.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.baidu.inf.iis.bcs.BaiduBCS;
import com.baidu.inf.iis.bcs.auth.BCSCredentials;
import com.baidu.inf.iis.bcs.auth.BCSSignCondition;
import com.baidu.inf.iis.bcs.http.HttpMethodName;
import com.baidu.inf.iis.bcs.policy.Policy;
import com.baidu.inf.iis.bcs.policy.PolicyAction;
import com.baidu.inf.iis.bcs.policy.PolicyEffect;
import com.baidu.inf.iis.bcs.policy.Statement;
import com.baidu.inf.iis.bcs.request.CreateBucketRequest;
import com.baidu.inf.iis.bcs.request.GenerateUrlRequest;
import com.baidu.inf.iis.bcs.request.GetObjectRequest;
import com.baidu.inf.iis.bcs.request.ListBucketRequest;
import com.baidu.inf.iis.bcs.request.ListObjectRequest;
import com.baidu.inf.iis.bcs.request.PutObjectRequest;
import com.baidu.inf.iis.bcs.request.PutSuperfileRequest;
import com.baidu.inf.iis.bcs.response.BaiduBCSResponse;

@SuppressWarnings("unused")
public class Sample {
private static final Log log = LogFactory.getLog(Sample.class);
// ----------------------------------------
static String host = "bcs.duapp.com";
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
return baiduBCS;
}

/**
* @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
try {
// -------------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();
log.info(result);
}

private static void getBucketPolicy(BaiduBCS baiduBCS) {
BaiduBCSResponse<Policy> response = baiduBCS.getBucketPolicy(bucket);

log.info("After analyze: " + response.getResult().toJson());
log.info("Origianal str: " + response.getResult().getOriginalJsonStr());
}

public static void getObjectMetadata(BaiduBCS baiduBCS) {
ObjectMetadata objectMetadata = baiduBCS.getObjectMetadata(bucket, object).getResult();
log.info(objectMetadata);
}

private static void getObjectPolicy(BaiduBCS baiduBCS) {
BaiduBCSResponse<Policy> response = baiduBCS.getObjectPolicy(bucket, object);
log.info("After analyze: " + response.getResult().toJson());
log.info("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()) {
log.info(bucket);
}
}

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);
log.info("we get [" + response.getResult().getObjectSummaries().size() + "] object record.");
for (ObjectSummary os : response.getResult().getObjectSummaries()) {
log.info(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();
log.info("x-bs-request-id: " + response.getRequestId());
log.info(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();
log.info("x-bs-request-id: " + response.getRequestId());
log.info(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();
log.info(result);
}

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>();
// 0
BaiduBCSResponse<ObjectMetadata> response1 = baiduBCS.putObject(bucket, object + "_part0", createSampleFile());
subObjectList.add(new SuperfileSubObject(bucket, object + "_part0", response1.getResult().getETag()));
// 1
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();
log.info("x-bs-request-id: " + response.getRequestId());
log.info(objectMetadata);
}

public static void setObjectMetadata(BaiduBCS baiduBCS) {
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("text/html12");
baiduBCS.setObjectMetadata(bucket, object, objectMetadata);
}

private static File createSampleFile() {
try {
File file = File.createTempFile("java-sdk-", ".txt");
file.deleteOnExit();

Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write("01234567890123456789\n");
writer.write("01234567890123456789\n");
writer.write("01234567890123456789\n");
writer.write("01234567890123456789\n");
writer.write("01234567890123456789\n");
writer.close();

return file;
} catch (IOException e) {
log.error("tmp file create failed.");
return null;
}
}
}

文件类型和后缀相应表 contentType.proerties

參考我的另外一篇文章:

http://blog.csdn.net/kissliux/article/details/18601729

源代码下载地址:http://download.csdn.net/detail/a442180673/6870241

百度云存储教程---免费建立自己的静态网站

时间: 2024-10-05 06:05:42

百度云存储教程---免费建立自己的静态网站的相关文章

uploadify控件 上传图片到百度云存储

最近使用了uploadify 控件上传图片到百度云....大体思路是 前台通过uploadify获取文件传入后台,调用百度云存储api上传到百度云,返回一个url 链接.我们把链接存储到数据库中,这样我们数据库中就是只有url  而真正的文件保存在百度云存储当中,很轻便很好用.这一个业务流程用到了uploadify 控件和百度云存储. 流程如下:首先下载uploadify 包 这个不同文件混在一起还没有分开..功能先实现再说... 前台jsp页面如下: <%@ page language="

Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传

[前言] 之前研究了ueditor直接上传图片文件到七牛云以及百度云存储,见下面两篇文章: http://uikoo9.com/blog/detail/ueditor-for-bcs http://uikoo9.com/blog/detail/ueditor-for-qiniu 另外还有一篇ueditor-1.4.3-jsp的使用教程: http://uikoo9.com/blog/detail/how-to-use-ueditor 今天实现了ueditor可配置选择上传到七牛还是百度还是本地,

Java使用百度云存储BCS-让你的数据下载飞起来

一.简介 云也不是一个新概念了,云到底是什么东西,你叫我说个明明白白的我也说不出来,姑且算作联网的就叫做云.国内的云服务商还是有很多了,主要有两大类,一类是类似于阿里云的类主机型的云提供商,比如万网等传统空间商转过来的:还有一类是应用应用托管平台,比如BAE,SAE.相对于阿里云等空间商之类的来说,应用托管平台的入门更低,为广大的苦逼程序猿提供了一个好的测试平台. 我最近负责的软件升级程序,多平台多文件多版本,如果是自己架构文件服务器带宽肯定不能满足业务需求,于是上手百度云存储BCS服务,现在使

吹响产品“集结号”,百度云摄像头的深谋远虑

在智能硬件大行其道的时代,智能视频摄像机正成为互联网巨头们的下一个角逐场地.值得一提的是,由海康威视萤石与百度联手打造的首款"百度云?萤石"智能视频摄像机C2S已于10月28日在京东开放预约,价格设定为388元.该消息在业界引发了强烈反响,因为这款产品无论定位还是定价都有其独到之处,也是百度在智能硬件方面的最新动作,截至目前,这款产品的预售量已经达到2700多,其市场关注度之高,可见一斑. 百度云摄像头"智"在何处? 据介绍,这款摄像机原型为萤石明星产品C2S,属于

后起之秀百度云为何能在竞争激烈的云市场上打响进攻战

在云计算和云存储方面百度无疑拥有极强的技术优势,因为每天百度要响应来自138个国家的数十亿次搜索请求,数据日处理总量达上百PB,利用云计算为用户提供快速准确的搜索查询是百度的传统优势.此外在云存储方面,百度建设了专用的云数据中心, 可以提供高可靠(服务稳定性高达99.9999%)的云存储服务:安全方面,百度云存储服务采用h t t p s加密传输.档案分块存储.底层元信息加密存储.O a u t h 2.0认证.档案多副本保存以及安全监控系统等. 容量大:云存储支持最高2T的单文件数据容量:个人

Dropbox 官方中文版!最优秀实用的免费跨平台文件网络同步网盘云存储服务

很不幸的,昨晚发现我的台式机又死机了,硬盘灯不闪烁,Num lock键也无任何反映,强行重启电脑后经过一段时间的磁盘扫描检测后,总算正常进入系统了,发现系统运行速度正常,初步判断盘符和文件均无丢失,有惊无险,联想起上个月刚出现了一起故障,电脑里面一个1T硬盘无法访问,万幸的是刚才故障盘里面既无操作系统也无重要文件.当时就想把重要文件复制下来,一时疏忽,忘记了,看来事不宜迟,得马上找到应对的措施,事不过三,下次再发生故障,估计就没这么好的运气了. 微软的DFS肯定是没必要的了,小牛拉大车,有点浪费

WordPress腾讯云存储搭建教程,完美解决

写在前面的话: 为什么会有今天的话题:WordPress+腾讯云存储? 因为博主不想使用七牛云,也不想使用又拍云,所以才有了今天的话题. 在使用腾讯云存储的过程中是很不顺利的,万幸的是现在终于完美融合了. 下面就给大家讲述一下我使用腾讯云存储的亲身经历吧! 我们都知道七牛云.又拍云,是因为这两大运营商已经是云存储的老前辈了,市面上流传出来的各种插件各种教程数不胜数,一抓一大把,就是一个不懂编程的人按照教程也能完美配置. 如果你百度搜索:"WordPress腾讯云存储"几乎没有多少相关答

百度云 百度网盘超级会员账号SVIP账号 永久免费分享 附常见的不限速网盘工具

加入组织 说实在的,免费更新了将近一年了,起初是因为自己经常要下东西,所以顺便更新一下,没想到这么多人关注. 现在自己也有半年没用过网盘了,更新的也慢了,账号失效的也快了. 那么我本身也有弄淘宝京东优惠这方面的,大家可以进这个群,以后账号在群里更新.这样呢,更新起来也有动力. 说实话这种吃力不讨好还免费的东西确实挺难坚持的. 同样也不强迫大家必须加,情况就是这么个情况,群里会分享一些淘宝京东的bug,主要还是买东西比较优惠. 账号呢每天在群里5点半更新(也会更新其他各大平台账号 包括: 迅雷 腾

云存储“T时代”:云空间推出1T免费空间

云存储“T时代”:云空间推出1T免费空间 近日,云空间今日宣布旗下免费云将免费赠送用户1T永久免费空间,用户只需简单操作就可获得总容量超过1T的免费云空间服务,这也标志着免费空间正式进入“T时代”.云空间也是目前唯一容量超过1T的免费空间. 目前,用户只需登陆云空间官方网站( http://www.616191.com/ ),便可以获得1T免费空间. 在率先解决存储空间问题后,云空间为了给用户提供更加快速.安全.稳定的云服务,还全面推出“五大防护功能”——防窃听,防偷窥,防盗号,防病毒,防损毁.