generate_get_object_url实现本地上传文件到BCS和获取BCS中文件的url从而在web开发中灵活使用。
对于实现原理,是个人对实践的理解,若有偏差,请不吝指正。
在实践中发现,create_object的作用是将服务器上的文件(注意是服务器上的文件)上传至BCS。这也就意味着,如果我们想上传一个本地文件到BCS。我们需要完成以下两步:
一、使用传统的上传表单将本地文件上传到服务器
即建立index.html文件内容如下:
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
这样就可以能过表单,将本地文件提交给upload.php去处理。
二、在upload.php中将所得到的表单发过来的临时文件上传至BCS。这样就可以完成整个上传本地文件到BCS的工作了。代码如下:
<?php
require_once 'bcs.class.php';
$host = 'bcs.duapp.com'; //online
$ak = '';//BAE应用的api_key
$sk = ‘’;//BAE应用的secret_key...不了解的可以参考BAE的使用文档
$bucket = '';//BAE下创建的云存储的名称
$object = '/'.$_FILES["file"]["name"];//以表单传过来的文件名做为object的名称,注意object必须以/开头。。可参见object命名规范
$fileUpload = $_FILES["file"]["tmp_name"];//上传的临时文件所在的位置
$baidu_bcs = new BaiduBCS ( $ak, $sk, $host );
try {
//上传文件到bcs
$response = $baidu_bcs->create_object ( $bucket, $object, $fileUpload );//将临时文件保存到BCS
if (! $response->isOK ()) {
die ( "Create object failed." );
}
//通过object获取文件url---以图片示例
$strurl=$baidu_bcs->generate_get_object_url ( $bucket, $object);//获取图片url
echo $strurl;
echo '<img src="'.$strurl.'"/>';//以图片形式显示
} catch ( Exception $e ) {
trigger_error ( $e->getMessage () );
}
?>