2012-06-06 44 views
0

我正在编写一个应用程序,通过该应用程序可以将文件上载到服务器。在应用程序运行期间,信息被写入文件并被删除。无论何时将文件上传到服务器,我都需要一个新的文件名,以便旧文件不会被替换。但是,该文件可能很大,因此我只想维护android系统上的一个文件。我希望服务器上的文件名具有上载时的日期和时间。有没有办法让服务器上的文件名与发送它的设备上的文件名不同?从android向服务器发送文件时更改文件名

我使用服务器上的标准multipart实体框架和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']); 

edit:added。“。”。因此有一段时间将原始文件名与日期/时间分开。如果需要稍后出现,更容易让您爆炸。

+0

哦!那好极了。我是PHP新手,不知道里面有日期格式功能。我会试试这个。 – Sap

0

您可以使用方法renameToFile

file.renameTo(newFile); 
+0

运行应用程序时从文件写入和删除的方法需要知道文件名。如果我不断更改文件名,那很难做到这一点。否则,我将不得不创建一个由于内存原因而不需要的文件副本。 – Sap