美文网首页
超简单快速实现附件上传(各种格式文件)和下载显示(调用浏览器下载

超简单快速实现附件上传(各种格式文件)和下载显示(调用浏览器下载

作者: 庞哈哈哈12138 | 来源:发表于2017-06-13 09:51 被阅读0次

    最快速简单的实现附件(各种类型文件,doc,word,excel,ppt,pdf,MP4,MP3,apk,等等)上传到服务器,然后从服务器下载,用浏览器下载,调用可以打开的应用(比如wps)打开查看
    效果图:


    这里看效果图点击linux指令集,然后浏览器下载,选择直接打开,调用wps直接打开查看

    demo下载
    https://github.com/PangHaHa12138/FileUploadDemo
    下面上代码
    1.布局;
    <RelativeLayout 
    android:background="?android:attr/selectableItemBackground" android:clickable="true" 
    android:id="@+id/tianjiafujian" 
    android:layout_width="match_parent" 
    android:layout_height="60dp"> 
    <ImageView 
    android:layout_centerVertical="true" android:src="@drawable/list_pic_tianjiafujian2x" 
    android:layout_marginLeft="12dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" />
     <TextView 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="38dp" 
    android:text="添加附件" 
    android:textColor="@color/white" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="14sp"/> 
    <ImageView 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true"
     android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="15dp" android:src="@drawable/list_but_nextpage2x"/>
    </RelativeLayout>
    <ListView 
    android:id="@+id/filelist" 
    android:cacheColorHint="#00000000" 
    android:listSelector="#00000000" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    </ListView>
    

    上面是按钮点击可以进入文件管理选择上传文件,下面是listview
    代码;
    2.上传逻辑

    private void upload() {
     tianjiafujian.setOnClickListener(new View.OnClickListener() { 
    @Override
     public void onClick(View v) {
     Toast.makeText(MainActivity.this,"添加附件",Toast.*LENGTH_SHORT*).show(); 
    Intent intent = new Intent(Intent.*ACTION_GET_CONTENT*); 
    intent.setType("*/*");//设置类型,ccc我这里是任意类型,任意后缀的可以这样写。 
    intent.addCategory(Intent.*CATEGORY_OPENABLE*); 
    startActivityForResult(intent,1);
     //startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), 1); 
    //intent.setType(“image/*”);//选择图片 //intent.setType(“audio/*”); //选择音频 
    //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android支持的视频格式) 
    //intent.setType(“video/*;image/*”);//同时选择视频和图片 } });}
    

    首先是点击事件,intent开启文件管理,然后选择文件类型设置任意类型
    然后再activityrecult回掉里拿到文件的路径

    //文件路径 
    @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     if (resultCode == Activity.*RESULT_OK*){
    //是否选择,没选择就不会继续 
    try { 
    Uri uri = data.getData();//得到uri,后面就是将uri转化成file的过程。 
    Log.d("文件路径--",uri+""); 
    String url = FileUtils2.getPath(MainActivity.this,uri); 
    String url2 = url.trim(); 
    UploadFile(url2); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } } }
    //然后路径拿到了就访问服务器上传
    private void UploadFile(String url) {
     File file = new File(url); 
    OkHttpUtils.post(uploadfile) .
    params("userid",userid) .
    params("taskid",taskid) .
    params("assid","") .
    params("file",file) .
    execute(new StringCallback() {
     @Override 
    public void onSuccess(String s, Call call, Response response) { 
    initdata();//上传成功后刷新
     } });}
    //上传成功后刷新
    private void initdata() { 
    OkHttpUtils.get(Sever)
     .params("taskid",taskid)
     .params("userid",userid)
     .execute(new StringCallback() { 
    @Override 
    public void onSuccess(String s, Call call, Response response) { 
    Data_huoqurenwuxiangqing data_huoqurenwuxiangqing = 
    JsonUtil.parseJsonToBean(s,Data_huoqurenwuxiangqing.class); 
    listacc = data_huoqurenwuxiangqing.getListAcc(); 
    myAdapter = new myAdapter(MainActivity.this,listacc); 
    listView.setAdapter(myAdapter); myAdapter.notifyDataSetChanged(); 
    } });}
    

    3.点击条目下载查看
    其实就是在adapter里intent开启浏览器
    这里是item外层布局设置clickable设置 true 然后添加点击事件,当然也可以正常的listview条目点击事件里写

    final String url = data.getFileaddressdown();
    holder.layout.setOnClickListener(new View.OnClickListener() { 
    @Override
     public void onClick(View v) {
     Intent intent= new Intent(); 
    intent.setAction("android.intent.action.VIEW"); 
    Uri content_url = Uri.parse(url); 
    intent.setData(content_url); 
    context.startActivity(intent); 
    }});
    

    然后就会调用浏览器下载,打开查看时看你有没有相应能打开对应格式的应用,图片浏览器直接打开,视频,音频都可以本地原生应用打开也可以用webview打开,至于word,pdf,ppt,excel,就需要对应的办公软件打开了
    最后,感谢阅读
    demo地址:https://github.com/PangHaHa12138/FileUploadDemo

    相关文章

      网友评论

          本文标题:超简单快速实现附件上传(各种格式文件)和下载显示(调用浏览器下载

          本文链接:https://www.haomeiwen.com/subject/skfdqxtx.html