文件上传问题。PHP些的云存储服务器,调用平台接口上传文件(例如阿里云等)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传问题。PHP些的云存储服务器,调用平台接口上传文件(例如阿里云等)。相关的知识,希望对你有一定的参考价值。

背景:做一个云存储应用,自己的服务器端是用PHP写的,用户文件要存储在阿里云提供的云存储平台上,现在的实现方式是 先把用户文件上传到自己的服务器,然后再调用阿里云平台提供的接口将用户文件以PUT方式存放到阿里云服务器上。
困扰:考虑到用所有用户文件都需要通过自己的服务器再转送到阿里云的服务器,自己的服务器压力会比较大,希望直接将用户文件上传至阿里云服务器,不知道应该怎么做。开始的想法是利用javascript模拟put操作将文件从用户处(调用阿里云的接口)直接上传到阿里云服务器,但是上网查了下没见到javascript可以模拟put操作或如何上传文件。
问题:求有经验人士给出建议,如何将用户文件直接传到阿里云的服务器,文件信息可以经过自己的服务器,但是文件实体就不经过自己的服务器直接传到阿里云的服务器。

简要流程图示如下:
我是这么理解的:
我这个云存储应用采用的是B/S架构,阿里云提供了PHP的API,但是php代码不是应该写在我自己的服务器上吗,用户文件要先传到自己的服务器上这些PHP代码才可以调用阿里云的接口把文件传递至阿里云平台啊...

继续追问:
官方提供SDK仅仅可以吧文件从自己的服务器上传到阿里云平台服务器,可以把文件从用户处通过浏览器直接上传到平台服务器吗?貌似不可以吧,

文件上传到自己的服务器 会在tmp目录下有缓存的 然后再上传到阿里云,不是直接从客户端上传到阿里云的。阿里云的sdk里面应该会有清晰的注释。 参考技术A 阿里云存储提供了PHP、python 等语言的API ,你使用它的API 进行上传和下载即可,不用经过你们自己的服务器。这里有个阿里云存储的python API 详解 http://www.dullgull.com/2012/07/%E9%98%BF%E9%87%8C%E4%BA%91%E5%AD%98%E5%82%A8%E6%9C%8D%E5%8A%A1oss-api%EF%BC%88python%EF%BC%89/追问

这些API要求提供用户文件位置(就是上传哪个文件,要是在自己的服务器上的文件我自然可以轻易的确定用户文件,但是文件还在用户的机器上我该怎么确定用户文件呢?),那么我怎么确定用户文件位置呢?就是我要把用户电脑里的文件传到阿里云的服务器...
可以做到么?

追答

可以让用户自己选择啊,你学PHP 的,这个很简单吧!

参考技术B 官方有提供ADK追问

这些API要求提供用户文件位置(就是上传哪个文件,要是在自己的服务器上的文件我自然可以轻易的确定用户文件,但是文件还在用户的机器上我该怎么确定用户文件呢?),那么我怎么确定用户文件位置呢?就是我要把用户电脑里的文件传到阿里云的服务器...
可以做到么?

Django项目上传到AWS服务器上

EC2是亚马逊(Amazon.com)提供的弹性云计算服务;
Apache是一个跨平台的Web服务器端软件,可以使Python、PHP、Perl等语言编写的程序运行在服务器上;
Django是一个Web程序框架,应用这个框架,可以使Python Web程序的编写变得更加简单;
Amazon S3是亚马逊提供的云存储服务;
Amazon EC2与Amazon S3结合, 几乎可以提供无限的存储空间和无限的计算能力。

以上这些东西综合在一起,就可以用简单易用的Python做出一个提供海量数据处理功能的网站,感觉这玩意儿应该在高通量测序数据数据处理方面有点用。

下面是在亚马逊EC2上部署Apache和Django的步骤:

0. 首先需要AWS上在建立一个EC2 Instance,使用Ubuntu Linux系统,可以直接在Community AMI中直接选择Ubuntu官方的AMI,ID为ami-cef405a7,EC2 Instance的建立过程并不复杂,这里就不细说了。注意:建好之后用SSH登录的时候,用户名是ubuntu,不是ec2-user,也不是root.

1. 安装apache
sudo apt-get install apache2

2. 下载安装Django
wget http://www.djangoproject.com/download/1.3/tarball/
下载下来的文件名是index.html,改一下名
mv index.html Django-1.3.tar.gz
解压
tar xzvf Django-1.3.tar.gz
安装
cd Django-0.91
sudo python setup.py install

3. 安装 mod_python
apt-get install libapache2-mod-python

4. 重启Apache
/etc/init.d/apache2 start

5. 进入/etc/apache2/sites-available目录,复制default文件并重命名为mysite
编辑mysite文件 将其中的/var/www 替换成 /home/ubuntu

激活mysite
a2ensite mysite

然后运行/etc/init.d/apache2 reload

6. 编辑 /etc/apache2/httpd.conf,添加下面内容
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonPath “[‘/home/ubuntu’, ‘/home/ubuntu/mysite’] + sys.path”

7. 重启Apache
/etc/init.d/apache2 restart

现在,将EC2 的Public DNS(类似这样ec2-xx-xx-xx-xx.compute-1.amazonaws.com)复制到浏览器地址栏里,就可以看到结果了。

如果要通过自己的域名访问将上面的部署,那只需要在域名管理中创建一个CNAME记录,并指向上面那个地址即可。

接下来的任务就是专心用Python写程序了。

 

 

 

 

 

 

 

 

 

 

转载自:http://www.yelinsky.com/blog/archives/370.html

























以上是关于文件上传问题。PHP些的云存储服务器,调用平台接口上传文件(例如阿里云等)。的主要内容,如果未能解决你的问题,请参考以下文章

vue页面传值能传图片吗

微信公众平台开发(80) 上传下载多媒体文件

Flutter实现文件上传华为对象存储(OBS)

Django项目上传到AWS服务器上

php 微信公众平台上传多媒体接口 41005错误

ModStartCMS全面支持国内云储存平台