2

サーバー上の指定されたフォルダーで特定のファイル拡張子 (私の場合は .zip) を持つ最新のファイルを検索し、そのファイルを Rackspace の Cloud Files に転送するコードをスクリプト化しようとしています。以下のコードは私が得た限りであり、エラーが発生し続けます:

致命的なエラー: /home/test/public_html/cloudapi/cloudfiles.php:1952 のメッセージ「Could not open file for reading: Resource id #8」を含むキャッチされない例外「IOException」スタック トレース: #0 /home/test/public_html/ final.php(60): CF_Object->load_from_filename(Resource id #8) #1 {main} が 1952 行目の /home/test/public_html/cloudapi/cloudfiles.php でスローされました

以下で使用しているコードは、もともと HTML アップロード フォームを介してコンテンツをアップロードするために作成されたもので、アップロードされたファイルの代わりにローカル サーバー ファイルを使用するように同じコードを適用しようとしています。アップロード スクリプトがどのように機能したかを示すために、アップロード スクリプトの以前のコメント付きコードが表示されます。

<?php

// include the Cloud API.
require('cloudapi/cloudfiles.php');


// START - Script to find recent file with the extension .zip in current folder
$show = 2; // Leave as 0 for all
$dir = ''; // Leave as blank for current

if($dir) chdir($dir);
$files = glob( '*.zip');
usort( $files, 'filemtime_compare' );

function filemtime_compare( $a, $b )
{
return filemtime( $b ) - filemtime( $a );
}

$i = 0;
foreach ( $files as $file )
{
++$i;
if ( $i == $show ) break;
$value = $file;  //Variable $value contains the filename of the recent file to be used in Cloud Files API
}
// END - Script to find recent file with the extension .zip in current folder



// START - Rackspace API code to upload content to cloud files container
// Rackspace Connection Details;
$username = "randomusername"; // put username here
$key = "234887347r93289f28h3ru283h2fuh23093402398"; // api key

// Connect to Rackspace
$auth = new CF_Authentication($username, $key);

$auth->authenticate();
$conn = new CF_Connection($auth);

//Set the Container you want to use
$container = $conn->get_container('Backups');

//Temp store the file
//$localfile = $_FILES['uploadfile']['tmp_name'];
//$filename = $_FILES['uploadfile']['name'];
$localfile = fopen($value, "r");
$filename = $value;


//Uploading to Rackspace Cloud
$object = $container->create_object($filename);
$object->load_from_filename($localfile);

echo "Your file has been uploaded";

// END - Rackspace API code to upload content to cloud files container
?>
4

2 に答える 2

2

私はこれが古いスレッドであることを知っています。しかし、解決策を探しているときにこのページにたどり着く可能性のある人々のために...

コードの問題は次のとおりです。

次のステートメントは、読み取り用にファイルを開きます

$localfile = fopen($value, "r");

ただし、load_from_filename 呼び出しを配置すると、ルーチンは同じファイルを開こうとして再度試みますが、$localfile で既に開いているため失敗します。

したがって、前のコマンドをコメントアウトすると、スクリプトを正常に実行できるはずです。

于 2011-05-31T10:07:54.627 に答える
0

読み取りファイルからコンテンツ タイプが定義されていないため、エラーがスローされています。

于 2011-03-10T07:35:59.970 に答える