0

ファイルをサーバーにアップロードできるアプリケーションを作成しています。アプリケーションの実行中に、情報がファイルに書き込まれ、削除されます。ファイルがサーバーにアップロードされるたびに、古いファイルが置き換えられないように新しいファイル名が必要です。ただし、ファイルが大きくなる可能性があるため、Androidシステムで1つのファイルのみを維持したいと思います。サーバー上のファイル名に、アップロードされた日時を含める必要があります。サーバー上のファイル名を、それを送信するデバイス上のファイル名とは異なるものにする方法はありますか?

サーバー上の標準のマルチパートエンティティフレームワークとphpコードを使用して、ファイルをサーバーにアップロードしています。phpコードを以下に示します。

<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br /

<input type="submit" value="Upload File" />
</form>

<?php
  $to_file = "locationdata/" . basename($_FILES['uploadedfile']['name']);
  $from_file = $_FILES['uploadedfile']['tmp_name'];

  if (move_uploaded_file($from_file, $to_file)) {
    echo "Successful upload";
?>
  <a href="<?php echo $to_file;?>"><?php echo $to_file;?></a>
<?php
  } else {
    echo "Unsuccessful upload";
  }
?> 

以下は、Androidアプリケーション用の私のコードのスニペットです。

public static File file = new File("/sdcard/upload.txt");
public static FileWriter writer;

このコードは、アプリケーションの実行中に(場合によっては複数回)呼び出すメソッドに含まれています。

writer = new FileWriter(file);
writer.write(".... what I want to print here.......");
writer.close();

次に、次のコードを使用してファイルをサーバーに送信します。

HttpClient client = new DefaultHttpClient();
HttpUriRequest request = new HttpPost(webAddress);
MultipartEntity form = new MultipartEntity();
client.getParams().setBooleanParameter("http.protocol.expect-continue", false);
form.addPart(inputName, new FileBody(new File(filePath)));
((HttpEntityEnclosingRequestBase) request).setEntity(form);

try {
    client.execute(request);    
    System.out.println("Connection Success");
} catch (ClientProtocolException e) {
    throw e;
} catch (IOException ee) {
    throw ee;
} 
4

2 に答える 2

1

サーバー上のファイル名を、それを送信するデバイス上のものとは異なるものにする方法はありますか?

はい!$to_file を次のように変更するだけです。

$dates = date('YmdHis');
$to_file = "locationdata/" . $dates."." . basename($_FILES['uploadedfile']['name']);

編集: 追加.".". 元のファイル名から日付/時刻を区切るピリオドがあるようにします。後で必要になった場合に、簡単に展開できます。

于 2012-06-06T20:59:20.137 に答える
0

renameToでメソッドを使用できますFileか?

file.renameTo(newFile);
于 2012-06-06T20:55:51.077 に答える