使用php对百度云BCS上传本地文件的实现及原理分析

来源:互联网 发布:看电子杂志的软件 编辑:程序博客网 时间:2024/06/05 07:53
本文主要使用BCS php SDK中的BaiduBCS类的create_objet方法和


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 () );
}
?>

0 0
原创粉丝点击