BLOBファイルのアップロード-ローカルシステムからAzureBLOBコンテナーに画像ファイルをアップロードしています。アップロードすると、ファイルサイズは拡張子なしで0Bと表示されます

Siddarth bhaire

Azure Webアプリから(ブラウザーのアップロードボタンを使用して)ファイルをAzureBLOBコンテナーにアップロードするPHPコードを作成しました。ファイルをblobコンテナーに正常にアップロードできますが、アップロードすると、ファイルは拡張子なしで0バイトとして紺碧のblobに配置されます。ファイルも表示できず、次のメッセージが表示されます。「ファイル「1721405003」には認識されない拡張子が含まれているため、正しくレンダリングされない可能性があります」。

以下は、ファイルをblobにアップロードするための私のphpコードです-

<?php
    error_reporting(0); 
?>
<?php
  require_once "vendor/autoload.php";
  use MicrosoftAzure\Storage\Blob\BlobRestProxy;
  use MicrosoftAzure\Storage\Common\ServiceException;
  use WindowsAzure\Common\ServicesBuilder;
  
  // If upload button is clicked ... 
  if (isset($_POST['upload'])) {

  //upload to azure blob container
  $connectionString = "conn key"; //Enter deployment key
  $containerName = 'sidblobcontainer';
  $blobClient = BlobRestProxy::createBlobService($connectionString);
  $file_name = $_FILES['myFile']['name'];
  $ext = pathinfo($file_name, PATHINFO_EXTENSION);
  $content = fopen($file_name, "r");
  $blob_name = "myblob".'.'.$ext;

  try {
    //Upload blob
    $blobClient->createBlockBlob($containerName, $blob_name, $content);
    echo "successfull";
    
  } catch (ServiceException $e) {
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message.PHP_EOL;
 }


    //upload to azure mysql database server
    $filename = $_FILES["myFile"]["name"]; 
    $tempname = $_FILES["myFile"]["tmp_name"];     
    $folder = "image/".$filename; 
        
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db = mysqli_connect("demoserversid.mysql.database.azure.com", 
          "siddarth@demoserversid", "****", "images"); 
  
        // Get all the submitted data from the form 
        $sql = "INSERT INTO demo (siddemo) VALUES ('$filename')"; 
  
        // Execute query 
        mysqli_query($db, $sql); 
          
        // Now let's move the uploaded image into the folder: image 
        if (move_uploaded_file($tempname, $folder))  { 
            $msg = "Image uploaded successfully"; 
        }else{ 
            $msg = "Failed to upload image"; 
      }
  } 
  $result = mysqli_query($db, "SELECT * FROM demo");
?> 
  
<!DOCTYPE html> 
<html> 
<head>
<style> #content{ 
    width: 50%; 
    margin: 20px auto; 
    border: 1px solid #cbcbcb; 
} 
form{ 
    width: 50%; 
    margin: 20px auto; 
} 
form div{ 
    margin-top: 5px; 
} 
#img_div{ 
    width: 80%; 
    padding: 5px; 
    margin: 15px auto; 
    border: 1px solid #cbcbcb; 
} 
#img_div:after{ 
    content: ""; 
    display: block; 
    clear: both; 
} 
img{ 
    float: left; 
    margin: 5px; 
    width: 300px; 
    height: 140px; 
}</style>
<title>Image Upload</title> 
<body>Upload to azure</body>
<link rel="stylesheet" type= "text/css" href ="style.css"/> 
<div id="content"> 
  
  <form method="POST" action="" enctype="multipart/form-data"> 
      <input type="file" name="uploadfile" value=""/> 
        
      <div> 
          <button type="submit" name="upload">UPLOAD</button> 
        </div> 
  </form> 
</div> 
</body> 
</html>

これがblobコンテナに表示されるメッセージです

スタンリーゴング

私はmysqlに関連する部分を削除しました、そして以下のコードは私のために働きます:

<?php
    error_reporting(0); 
?>
<?php
  require_once "vendor/autoload.php";
  use MicrosoftAzure\Storage\Blob\BlobRestProxy;
  use MicrosoftAzure\Storage\Common\ServiceException;
  use WindowsAzure\Common\ServicesBuilder;
  
  // If upload button is clicked ... 
  if (isset($_POST['upload'])) {
      
 
  $connectionString = "<conn str>"; //Enter deployment key
  $containerName = '<container name>';
  $blobClient = BlobRestProxy::createBlobService($connectionString);

  $file_name = $_FILES['fileToUpload']['name'];
  error_log($file_name);
  $ext = pathinfo($file_name, PATHINFO_EXTENSION);
  $content = fopen($_FILES['fileToUpload']["tmp_name"], "r");
  $blob_name = "myblob".'.'.$ext;

  try {
    //Upload blob
    $blobClient->createBlockBlob($containerName, $blob_name, $content);
    echo "successfull";
    
  } catch (ServiceException $e) {
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message.PHP_EOL;
 }
} 

?> 


<!DOCTYPE html> 
<html> 
<head>
<style> #content{ 
    width: 50%; 
    margin: 20px auto; 
    border: 1px solid #cbcbcb; 
} 
form{ 
    width: 50%; 
    margin: 20px auto; 
} 
form div{ 
    margin-top: 5px; 
} 
#img_div{ 
    width: 80%; 
    padding: 5px; 
    margin: 15px auto; 
    border: 1px solid #cbcbcb; 
} 
#img_div:after{ 
    content: ""; 
    display: block; 
    clear: both; 
} 
img{ 
    float: left; 
    margin: 5px; 
    width: 300px; 
    height: 140px; 
}</style>
<title>Image Upload</title> 
<body>Upload to azure</body>
<link rel="stylesheet" type= "text/css" href ="style.css"/> 
<div id="content"> 

  <form method="POST" action="" enctype="multipart/form-data"> 
      <input type="file" name="fileToUpload" id="fileToUpload"/> 
        
      <div> 
          <button type="submit" name="upload">UPLOAD</button> 
        </div> 
  </form> 
</div> 
</body>
</html>

結果:

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ