【问题标题】:Writing a filename to a OutputStream when uploading to php server so the file will be named properly上传到php服务器时将文件名写入OutputStream,以便正确命名文件
【发布时间】:2011-02-22 01:23:16
【问题描述】:

这应该很快。目前我有这段代码可以将图像写入输出流并将其上传到服务器:

        OutputStream os = connection.getOutputStream();

        BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
        int totalBytes = fis.available();

        for(int i = 0; i < totalBytes; i++) {
            os.write(fis.read());
        }

等等。 (我知道用于写入数据的 for 循环是非常基础的,我会在未来让它变得更好,我只是想让事情在基本级别上工作)。

无论如何,如您所见,我正在将文件写入流并将其发送出去,这很好。我的问题是,我还没有办法传输正确的文件名。在php端我只是将它设置为一个通用的时间戳文件名,我也不想在手机上使用默认的图像名称,上传的图像将包含上传的用户名,包括我可以添加的时间戳在php端就好了。我只需要知道如何包含类似名称值对的内容,其中包含用户名,因此在 php 端,文件名可以包含该字符串。谢谢!

编辑:不知道我为什么说数据,它只是一个输出流......

【问题讨论】:

  • 您的应用程序如何发送文件(通过邮寄、其他标准 http 协议等?),以及远程 PHP 脚本如何读取文件($_FILEsockets 服务器等) ?使用的协议可能会有所不同。

标签: php android file-upload


【解决方案1】:

文件名通常在标题中发送。对于 POST(通常是您在获取输出流时使用的),您应该具有 multipart/form-data 的内容类型,并且每个部分都有一个 content-disposition 标头。对于与文件对应的部分(在您的情况下是唯一的部分), content-disposition 标头应该有一个 filename="foo.txt" 组件。然后服务器将内容保存在一个临时文件中,并将包含在 content-disposition 标头中的信息传递给您的脚本(以及获取上传文件本身的方法)。

详情请见RFC 1867

【讨论】:

  • 谢谢老兄,会调查的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2014-12-19
  • 1970-01-01
  • 2018-03-12
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多