0

いくつかのファイルを自分の Web サイトにアップロードしようとしています。私は他の誰かからこのコードを使用しました。

var xhr = Titanium.Network.createHTTPClient();


var file = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory + 'text.txt');
Titanium.API.info(file);
var toUpload = file.read();

xhr.open('POST', 'http://www.domain.com/upload.php', false);
xhr.send({media: toUpload});

この方法でアプリを実行しようとしましたが、アップロードが完了したと表示されますが、ファイルがありません。

また、この PHP ファイルを使用してアップロードを処理しました。

<?php
$target = "upload/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
}
else {
echo "Sorry, there was a problem uploading your file.";
}
?>

何か問題がありますか、それとも何かを変更する必要がありますか?

ありがとう!

4

1 に答える 1

1

これは実行可能なソリューションのように見えます: https://gist.github.com/furi2/1378595

ただし、個人的には常にすべてのバイナリ コンテンツを base64 に変換し、それをバックエンドに投稿して base64 でデコードします。

チタン側:

var xhr = Titanium.Network.createHTTPClient();

var file = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory + 'text.txt');
Titanium.API.info(file);
var toUpload = Titanium.Utils.base64encode(file)

xhr.open('POST', 'http://www.domain.com/upload.php', false);
xhr.send({media: toUpload, media_name: 'text.txt'});

そしてPHP側では:

<?php
$target = "upload/";
$target = $target . $_POST['media_name'];
$data = base64_decode($_POST['media']);
$ok=1;
if(file_put_contents($target, $data))
{
echo "The file ". ( $_POST['media_name']). " has been uploaded";
}
else {
echo "Sorry, there was a problem uploading your file.";
}
?>
于 2013-07-12T12:18:33.377 に答える