java-通过okhttp3上传文件

java-通过okhttp3上传文件,第1张

概述选择图像,doc或pdf后,我想将它们通过okhttp3.如何执行此 *** 作?@OverridepublicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){//TODOAuto-generatedmethodstubsuper.onActivityResult(requestCode,resultCode,data);if(resultCod

选择图像,doc或pdf后,我想将它们通过okhttp3.如何执行此 *** 作?

@OverrIDepublic voID onActivityResult(int requestCode, int resultCode, Intent data) {    // Todo auto-generated method stub    super.onActivityResult(requestCode, resultCode, data);    if(resultCode==RESulT_OK && requestCode==0){        Log.d("uri data",""+data.getData());        selectedfileUri = data.getData();        fileToBeUploaded = new file(""+selectedfileUri);        filename = fileToBeUploaded.getname();        Log.d("filename",""+filename);

并在okhttp 3中

Requestbody formBody = new Multipartbody.Builder()                    .setType(Multipartbody.FORM)                    .addFormDataPart("data[User][user_picture]", fileToBeUploaded.getname(),Requestbody.create(MediaType.parse("*/*"), fileToBeUploaded))

显示的错误是

java.io.fileNotFoundException: content:/com.androID.provIDers.media.documents/document/image%3A40227: open Failed: ENOENT (No such file or directory)

谢谢.

解决方法:

所以我自己回答这个问题.

因此,我首先将输出流打开到一个临时文件.

imageTempuploadfile=new file(Environment.getExternalStorageDirectory()+"/inpaint/");if(!imageTempuploadfile.exists())    imageTempuploadfile.mkdirs();    imageTempuploadfile2 = new file(Environment.getExternalStorageDirectory() + "/inpaint/"+"file"+".docx");OutputStream outputTempfileStream = new fileOutputStream(imageTempuploadfile2);

扩展名取决于MIME类型.您可以通过以下方式找到MIME类型

@OverrIDepublic voID onActivityResult(int requestCode, int resultCode, Intent data) {    // Todo auto-generated method stub    super.onActivityResult(requestCode, resultCode, data);    if(resultCode==RESulT_OK && requestCode==0){        Log.d("uri data",""+data.getData());        String mimetype = context.getContentResolver().getType(data.getData());        selectedfileUri = data.getData();

现在读取文件并将其内容写入临时文件

selectedfileinputStream = getContentResolver().openinputStream(selectedfileUri);

现在写入文件

try {    try {        byte[] buffer = new byte[4 * 1024]; // or other buffer size        int read;        while ((read = selectedfileinputStream.read(buffer)) != -1) {            outputTempfileStream.write(buffer, 0, read);        }        outputTempfileStream.flush();    } finally {        outputTempfileStream.close();    }} catch (Exception e) {    e.printstacktrace(); // handle exception, define IOException and others}

最后

MultipartUtility multipart = new MultipartUtility(urlLeaveFormApply, charset);multipart.addfilePart("data[User][user_picture]", imageTempuploadfile2);

成功之后的最后

imageTempuploadfile2.delete();
总结

以上是内存溢出为你收集整理的java-通过okhttp3上传文件全部内容,希望文章能够帮你解决java-通过okhttp3上传文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1095418.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存