0

我正在尝试从服务器下载文件,服务器向我发送了一个没有扩展名的八位字节流,但是它在 http 标头中发送了扩展名(名称为 fileType)。

我要做的是读取该 http 标头,然后将文件类型附加到下载的文件中。

以下代码可以正常工作,如果我手动添加扩展名,文件就可以了:

@Override
protected String doInBackground(String... params) {
    String fileUrl = params[0];
    String pathToSave = params[1];
    String appId = params[2];
    URL url;
    try {
        url = new URL(fileUrl);
        URLConnection connection = url.openConnection();
        connection.connect();
        int lenghtOfFile = connection.getContentLength();
        InputStream input = new BufferedInputStream(url.openStream());
        OutputStream output = new FileOutputStream(pathToSave);
        byte data[] = new byte[1024];

        long total = 0;
        int count = 0;
        while ((count = input.read(data)) != -1) {
            total += count;
            output.write(data, 0, count);
        }
//          String temp = connection.getHeaderField("fileType");
//          byte [] extension = connection.getHeaderField("fileType").getBytes();
//          output.write(extension, 0, extension.length);
        output.flush();
        output.close();
        input.close();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

通过调试我看到 temp 是“jpg”,那么为什么这 3 行不起作用?

//          String temp = connection.getHeaderField("fileType");
//          byte [] extension = connection.getHeaderField("fileType").getBytes();
//          output.write(extension, 0, extension.length);

感谢您阅读

4

1 回答 1

2

为什么要将文件类型附加到文件的内容中?

如果要将其附加到文件名,则需要将其附加到pathToSave而不是附加到outputstream

....
url = new URL(fileUrl);
URLConnection connection = url.openConnection();
connection.connect();
String temp = connection.getHeaderField("fileType");
pathToSave = pathToSave + "." + temp;
于 2013-07-30T09:39:37.197 回答