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 に答える