Rackspace bulut dosyaları: Görüntü PHP kullanarak Rackspace bulut dosyaları yükleyin

4 Cevap php

Ben kullanıcı kendi görüntü Gallary için profil resmi veya resim gibi görüntüler yükleyebilirsiniz bir proje yapıyorum. Şu anda onun benim sunucuya tüm görüntüleri yükleyerek.

Now, i want to upload all this image to my rackspace cloud files directly using php script. For example:

  1. Kullanıcı bir dosyayı seçin
  2. Basın bazı bilgiler ile birlikte teslim
  3. Seçilen dosya Rackspace sunucuya yüklenir ve dosya konumunu iade edilecektir.
  4. daha sonra diğer bilgilerle birlikte dosya konumu benim veritabanında kaydedilir.
  5. sonra ben bu konumdan dosyası veya resmi gösterecektir.

u ben bunu tam olarak nasıl, herhangi bir fikrin var mı?

i kullanıyorum:

  • Codeigniter framework
  • jQuery gibi javascript kütüphanesi

herhangi bir cevap için şimdiden teşekkürler.

4 Cevap

Dosyaları-doğrudan-to yüklenemiyor Rackspace Dosyalar, forma Rackspace kimlik gömme gibi bir şey çalışıyorum olmadan. Bu mümkün olsa bile bunun iyi bir fikir olmaz. (Yani kullanıcı uygulama ile ilgisi var sizin kimlik bilgilerinizi kullanarak büyük içerik ekleyebilirsiniz). Yani Rackspace saklanan dosya esas olan, ne istediğinizi almak ve sunucuda saklanan dosyanın konumu iş akışını değiştirmek gerekiyor. Olması gereken:

  1. Form yüklenenler için-senin dosya sunucusu-
  2. Dosya kullanır-sunucu-hesaplanmış konteyner ve dosya
  3. -Dosyalarınızı Rackspace için geçici dosya sunucu yükler

Eğer dosya kamuya indirilebilir olmak istiyorsanız ...

  1. -Lütfen kullanıcı erişebilir dosyası için bir kamu URL yapma, CDN üzerinden hizmet için dosyayı sunucu sağlar.
  2. Sunucu html oluşturur zaman CDN adresler gömer ve kullanıcı sihirli dosyaları alır

Eğer dosya sadece-belli-kullanıcılar tarafından indirilebilir olmak istiyorsanız ....

  1. -Senin Rackspace ile sunucu kimlik doğrulaması ve geçici dosyayı indirir
  2. -Lütfen sunucu hem dosyayı VE HTML sunucu hizmet vermektedir

Ayrıca Rackspace bulut örneği veya düzenli bir Rackspace Managed Server (ya da en azından bana ne müşteri desteği) sunucu sizin ise-Sen arasında-sunucu-ve Rackspace dosyaları bant genişliği için ödemezsiniz. Amazon ve Rackspace arasındaki oranlarının hesaplanmasında önemli bir gerçektir.

So you can either use Rackspace Files as a massive hard-drive for your server, which gives you control over access, or you can use it as a massive public distribution network... But in both cases you might need to change the order of your steps to give you what you want...

Ayrıca a simple example of using php to upload a file gathered from an HTML form to rackspace files bakmak olabilir.

welcome.php dan:

    function index()
    {
            if(!empty($_FILES)){
                    require('system/libraries/cloudfiles.php');
                    $upload_dir = 'upload/doc/2';
                    $tmp_name = $_FILES['upload']['tmp_name'];
                    $name = $_FILES['upload']['name'];
                    move_uploaded_file($tmp_name,"$upload_dir/$name");
                    $username = 'ABC';
                    $key = 'X';
                    $auth = new CF_Authentication($username, $key);
                    $auth->authenticate();
                    $conn = new CF_Connection($auth);
                    $container = $conn->get_container('documents');
                    $localfile = "$upload_dir/$name";
                    $object = $container->create_object($name);
                    $object->load_from_filename($localfile);
            }
            $this->load->view('global_header');
            $this->load->view('welcome_message');
    }

welcome_message.php dan:

<form method="post" action="#" enctype="multipart/form-data"s>
<input type="file" name="upload"><br/>
<input type="submit">
</form>

Karşılaştığım sorunlar:

cacert.pem ~ Bu dosya, web dizinine gitmek gerekiyor ve API ile birlikte geliyor.

Eğer PECL'de fileinfo gerekebilir, ve (eğer zaten yoksa), bu sizin için Libmagic gerekebilir.

Ayrıca paket php5-curl gerekir ve php curl hataları bildirmek, böylece API kazmak ve o çalışma değilse, bazı çıktı katmıyor.

Ben sadece benzer bir şey ile bitti. Ben bu yazı benim bulguları eklemek düşündüm.

First, place the cloudfiles package in your application/libraries directory: https://github.com/rackspace/php-cloudfiles

Then check out this simple integration class. Also, place in libraries directory. https://bitbucket.org/modomg/codeigniter-rackspace-cloudfiles

Cheers, Jeff Walters

Bu yanıtların bir çok eski ve bakıyor Orbit's answer Ben o zamandan beri API için birçok değişiklikler olmuştur olmalı bence. Ve ftrotter already explained doğrudan yükleme çalışıyorum hakkında beri, sana PHP tmp dizinden dosya göndermek için nasıl güncelleştirilmiş bir sürümünü (PHP 5.3 tarzı) gösterecektir.

Öncelikle biz zaten besteci kullanarak API yüklü varsayıyoruz.

Önce onların autoloader içerir ve daha sonra use ad eklemeniz gerekir.

require 'vendor/autoload.php';

use OpenCloud\Rackspace as Rackspace;

Sonra sadece kurulum istemci örneğe

// first setup the client using your portal username and API key
$client = new Rackspace(Rackspace::US_IDENTITY_ENDPOINT, array(
    'username' => 'YOUR-USERNAME',
    'apiKey'   => 'YOUR-API-KEY'
));

$region = 'DFW'; // can be ORD or various others and must be set

// now get the container
$container = $client->objectStoreService('cloudFiles', $region)
    ->getContainer('YOUR-CONTAINER');

Şimdi konteyner sadece kurulum dosyaları dizinizi olabilir ve bunları upload var. Burada hızlı ve kirli yolu:

if (isset($_FILES)) {
    $files = array();
    foreach ($_FILES as $file) {
        if (0 === $file['error']) {
            $files[] = array(
                'name' => $file['name'],
                'path' => $file['tmp_name']
            );
        }
    }

    if (count($files)) {
        // upload files to Rackspace Cloud Files container
        $result = $container->uploadObjects($files);
    }
}

Şimdi kapta sonuna kadar zaman dosyalarınızı mevcut isimlerini tutacak ve sağ Rackspace Cloud portalda sizin konteyner için kamu URL yolunu alabilirsiniz.