【问题标题】:loading images windows azure storage加载图像 windows azure 存储
【发布时间】:2014-01-14 12:15:00
【问题描述】:

我有这个在 windows azure storage 中上传图片的 php 源

<?php
require_once('WindowsAzure/WindowsAzure.php');

use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;

// Create blob REST proxy.
$connectionString='DefaultEndpointsProtocol=http;AccountName=myaccount;AccountKey=jNbf/qmRENb1HZpSqE/SnkAi8WQyUKPE7AaFgVu1u0AFGPEUsbWW10Y+fZud1OOn7zi18J5VnSC0NadZXU8Bpvsg==';
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
$path="files/";
    foreach ($_FILES as $key) {
        if($key['error'] == UPLOAD_ERR_OK ){
            $name = $key['name'];
            $temp = $key['tmp_name'];
            $size= ($key['size'] / 1000)."Kb";
            move_uploaded_file($temp, $path. $name);
            $content = fopen($path.$name, "r");
            $blob_name = $name;
            try {
                  $blobRestProxy->createBlockBlob("imgs", $blob_name, $content);
               }
            catch(ServiceException $e){
                    $code = $e->getCode();
                   $error_message = $e->getMessage();
                   echo $code.": ".$error_message."<br />";
            }

            echo "
                <div id='loaded'>
                    <h12><strong>File Name: $nombre</strong></h2><br />
                    <h12><strong>Size: $tamano</strong></h2><br />
                    <hr>
                </div>
                ";
        }else{
            echo $key['error']; 
        }
    }
?>

问题是我必须先将文件保存在服务器硬盘中,然后将其发送到windows azure中的容器,可以跳过这一步直接发送到windows azure,避免这一行 move_uploaded_file($temp, $path.$name);?,因为我试过这样做:

$content = $key['tmp_name'];但是不行

【问题讨论】:

    标签: php windows file azure upload


    【解决方案1】:

    试试

    $content = file_get_contents($key['tmp_name']);
    

    【讨论】:

    • 请解释为什么这个答案会帮助用户解决他们的问题。这可能很好地解决了这个问题,但这个站点有双重目的,即作为用户在未来搜索这些问题的答案的存档。解释大大提高了机会,这不仅对 OP,而且对所有未来的观众都有帮助。
    【解决方案2】:

    PHP 将从浏览器加载的所有文件保存在某个特殊目录中的临时文件中。您在 PHP 脚本中只收到此临时文件的名称,它是“tmp_name”。

    所以,'tmp_name' 是一个真实的文件名,你可以跳过移动上传的文件,直接通过阅读它的内容来使用这个文件:

    $content = file_get_contents($key['tmp_name']);
    

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多