gpt4 book ai didi

android无法显示PDF(name.pdf格式无效)

转载 作者:行者123 更新时间:2023-11-29 23:53:08 24 4
gpt4 key购买 nike

我正在使用 volley 下载一个文件,但我无法打开它,它显示:

cannot display PDF (name.pdf is of invalid format)

还提到该服务返回一个 11kb 字节 [] 和调试,我收到一个 16kb 的响应。我使用的代码是:

InputStreamVolleyRequest request = new InputStreamVolleyRequest(Request.Method.POST, uri,
new Response.Listener<byte[]>() {
@Override
public void onResponse(byte[] response) {
try {
if (response!=null) {

if(Build.VERSION.SDK_INT>22){
requestPermissions(new String[] {"android.permission.WRITE_EXTERNAL_STORAGE","android.permission.READ_EXTERNAL_STORAGE"}, 1);
}

File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
baseDir.mkdirs();
File carpeta = new File(baseDir + nombre_carpeta);
carpeta.mkdirs();
File file = new File(baseDir, documento.NombreFichero.replace("\\","/"));
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
bos.write(response);
bos.flush();
bos.close();
Log.d("NEWFILE", file.getAbsolutePath());
Toast.makeText(getActivity(), "Descarga completa.", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}

}
} catch (Exception e) {
Log.d("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
e.printStackTrace();
}
}
} ,new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}, (HashMap<String, String>) params);

RequestQueue mRequestQueue = Volley.newRequestQueue(getActivity().getApplicationContext(), new HurlStack());
mRequestQueue.add(request);

提前致谢!

最佳答案

最后,我将响应作为字符串发送,然后使用 android.util.Base64 对其进行解码。这是代码:

StringRequest sr = new StringRequest(Request.Method.POST, uri, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
baseDir.mkdirs();
File carpeta = new File(baseDir + nombre_carpeta);
carpeta.mkdirs();
File file = new File(baseDir, documento.NombreFichero.replace("\\","/"));
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file));

FileOutputStream fos = new FileOutputStream(file);

byte[] respuesta = android.util.Base64.decode(response.getBytes(), android.util.Base64.DEFAULT);

fos.write(respuesta);

fos.flush();

fos.close();
output.close();
}catch(IOException e){
e.printStackTrace();
}
}
}

关于android无法显示PDF(name.pdf格式无效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com