【问题标题】:Change file name when sending file from android to server将文件从android发送到服务器时更改文件名
【发布时间】:2012-06-10 22:22:19
【问题描述】:

我正在编写一个可以将文件上传到服务器的应用程序。在应用程序运行期间,信息被写入文件并被删除。每当文件上传到服务器时,我都想要一个新的文件名,这样旧文件就不会被替换。但是,该文件可能很大,因此我只想在 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 应用程序代码的 sn-ps。

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;
} 

【问题讨论】:

    标签: android file upload filenames multipartentity


    【解决方案1】:

    有没有办法使服务器上的文件名与发送它的设备上的文件名不同?

    是的!您所要做的就是将 $to_file 更改为其他内容,例如:

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

    编辑:添加了“.”。以便将日期/时间与原始文件名分开。如果以后需要,您更容易爆炸。

    【讨论】:

    • 哦!那好极了。我是 php 新手,不知道里面有日期格式功能。我会试试这个。
    【解决方案2】:

    你能用File中的方法renameTo吗?

    file.renameTo(newFile);
    

    【讨论】:

    • 运行应用程序时从文件中写入和删除的方法需要知道文件名。如果我不断更改文件名,将很难做到这一点。否则,由于内存原因,我将不得不创建我不想要的文件的副本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多