2022年java文件上传,客户端和服务器端 .pdf
《2022年java文件上传,客户端和服务器端 .pdf》由会员分享,可在线阅读,更多相关《2022年java文件上传,客户端和服务器端 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、package com.gem.hsx.servlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.List;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servle
2、t.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileItemFactory;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet SuppressWarni
3、ngs(unchecked)protected void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException String BOUNDARY=UUID.randomUUID().toString();try request.setCharacterEncoding(UTF-8);/设置处理请求参数的编码格式response.setContentType(text/html;charset=UTF-8);/设置 Content-Type 字段值Pri
4、ntWriter out=response.getWriter();out.println(文件开始!);/下面的代码开始使用Commons-UploadFile 组件处理上传的文件数据FileItemFactory factory=new DiskFileItemFactory();/建立 FileItemFactory 对象ServletFileUpload upload=new ServletFileUpload(factory);/分析请求,并得到上传文件的FileItem 对象List items=upload.parseRequest(request);/从 web.xml 文件中
5、的参数中得到上传文件的路径String uploadPath=d:upload;File file=new File(uploadPath);名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -if(!file.exists()file.mkdir();String filename=;/上传文件保存到服务器的文件名InputStream is=null;/当前上传文件的InputStream 对象/循环处理上传文件for(FileItem item:items)/处理普通的表单域if(item.isFormField()if(item.getFieldName().eq
6、uals(filename)/如果新文件不为空,将其保存在filename 中if(!item.getString().equals()filename=item.getString(UTF-8);/处理上传文件else if(item.getName()!=null&!item.getName().equals()/从客户端发送过来的上传文件路径中截取文件名filename=item.getName().substring(item.getName().lastIndexOf()+1);is=item.getInputStream();/得到上传文件的InputStream 对象 /将路径和
7、上传文件名组合成完整的服务端路径filename=uploadPath+BOUNDARY+filename;/如果服务器已经存在和上传文件同名的文件,则输出提示信息if(new File(filename).exists()new File(filename).delete();/开始上传文件if(!filename.equals()/用 FileOutputStream 打开服务端的上传文件FileOutputStream fos=new FileOutputStream(filename);byte buffer=new byte8192;/每次读 8K 字节int count=0;/开始
8、读取上传文件的字节,并将其输出到服务端的上传文件输出流中while(count=is.read(buffer)0)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -fos.write(buffer,0,count);/向服务端文件写入字节流 fos.close();/关闭 FileOutputStream 对象is.close();/InputStream 对象out.println(文件上传成功!);catch(Exception e)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -package com.gem.hsx.activity;i
9、mport java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.ListActivity;import android.content.Context;import android.content.Intent;import .Uri;import android.os.Bundle;import android.util.Log;import android.view.Display;impo
10、rt android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;impor
11、t com.gem.hsx.activity.R;public class ExDialog extends ListActivity private ListMap mData;private String mDir=/sdcard;Override protected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);Intent intent=this.getIntent();Bundle bl=intent.getExtras();String title=bl.getString(ex
12、plorer_title);Uri uri=intent.getData();mDir=uri.getPath();setTitle(title);mData=getData();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 12 页 -MyAdapter adapter=new MyAdapter(this);setListAdapter(adapter);WindowManager m=getWindowManager();Display d=m.getDefaultDisplay();LayoutParams p=getWindow().getAttributes();p
13、.height=(int)(d.getHeight()*0.8);p.width=(int)(d.getWidth()*0.95);getWindow().setAttributes(p);private ListMap getData()ListMap list=new ArrayListMap();Map map=null;File f=new File(mDir);File files=f.listFiles();if(!mDir.equals(/sdcard)map=new HashMap();map.put(title,返回上一级目录/);map.put(info,f.getPare
14、nt();map.put(img,R.drawable.ex_folder);list.add(map);if(files!=null)for(int i=0;i files.length;i+)map=new HashMap();map.put(title,filesi.getName();map.put(info,filesi.getPath();if(filesi.isDirectory()map.put(img,R.drawable.ex_folder);else map.put(img,R.drawable.ex_doc);list.add(map);return list;Over
15、ride protected void onListItemClick(ListView l,View v,int position,long id)Log.d(MyListView4-click,(String)mData.get(position).get(info);if(Integer)mData.get(position).get(img)=R.drawable.ex_folder)mDir=(String)mData.get(position).get(info);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -mData=getData();MyAdap
16、ter adapter=new MyAdapter(this);setListAdapter(adapter);else finishWithResult(String)mData.get(position).get(info);public final class ViewHolder public ImageView img;public TextView title;public TextView info;public class MyAdapter extends BaseAdapter private LayoutInflater mInflater;public MyAdapte
17、r(Context context)this.mInflater=LayoutInflater.from(context);public int getCount()return mData.size();public Object getItem(int arg0)return null;public long getItemId(int arg0)return 0;public View getView(int position,View convertView,ViewGroup parent)ViewHolder holder=null;if(convertView=null)hold
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年java文件上传 客户端和服务器端 2022 java 文件 上传 客户端 服务器端
限制150内