2012-06-06 5 views
0

Я пишу приложение, с помощью которого файл может быть загружен на сервер. Во время запуска приложения информация записывается в файл и удаляется. Всякий раз, когда файл загружается на сервер, я хочу новое имя файла, чтобы старый файл не был заменен. Однако файл может быть большим и, следовательно, я хочу сохранить только один файл в системе Android. Я хочу, чтобы имя файла на сервере имело дату и время, когда оно было загружено. Есть ли способ сделать имя файла на сервере отличным от того, что оно есть на устройстве, отправляющем его?Изменение имени файла при отправке файла с android на сервер

Я загружаю файл на сервер с использованием стандартной многомерной сущности и 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; 
} 

ответ

1

Возможно ли каким-либо образом сделать имя файла на сервере отличным от того, что оно есть на устройстве, отправляющем его?

Да! Все, что вам нужно сделать, это изменить $ to_file к чему-то другому, как:

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

редактирования:. Добавленным «». так что существует период, отделяющий дату/время от исходного имени файла. Легче для вас взорваться, если возникнет необходимость позже.

+0

О! Это прекрасно. Я новичок в php и не знаю, что в нем есть функция формата даты. Я попробую это. – Sap

0

Вы могли бы использовать метод renameTo в File?

file.renameTo(newFile); 
+0

Методы, которые записывают и удаляют из файла при запуске приложения, должны знать имя файла. Если я буду продолжать изменять имя файла, это будет трудно сделать. В противном случае мне пришлось бы создать копию файла, который я не хочу из-за соображений памяти. – Sap

Смежные вопросы