java web不用框架怎么做上传下载?
答案:3 悬赏:0 手机版
解决时间 2021-01-29 13:53
- 提问者网友:心如荒岛囚我终老
- 2021-01-29 06:41
java web不用框架怎么做上传下载?
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-01-29 06:56
我不方便发链接;上传 。具体可以在百度中搜索: form servlet , 有相关的资料和示例。
如果是下载,直接用Servlet读取服务器上资源; ,然后以流的信息输出到前端。
如果是上传,在form中 post mutilpart/form-data 类型的数据给Servlet都可以采用Servlet来实现
如果是下载,直接用Servlet读取服务器上资源; ,然后以流的信息输出到前端。
如果是上传,在form中 post mutilpart/form-data 类型的数据给Servlet都可以采用Servlet来实现
全部回答
- 1楼网友:鸽屿
- 2021-01-29 08:01
struts 有提供的。 文件上传 1.jsp页面 <s:form action="fileaction" namespace="/file" method="post" enctype="multipart/form-data"> <!-- name为后台对应的参数名称 --> <s:file name="files" label="file1"></s:file> <s:file name="files" label="file2"></s:file> <s:file name="files" label="file3"></s:file> <s:submit value="提交" id="submitbut"></s:submit> </s:form> 2.action //单个文件上传可以用 file files,string filesfilename,string filescontenttype //名称要与jsp中的name相同(三个变量都要生成get,set) private file[] files; // 要以file[]变量名开头 private string[] filesfilename; // 要以file[]变量名开头 private string[] filescontenttype; private servletcontext servletcontext; //action调用的上传文件方法 public string execute() { servletcontext servletcontext = servletactioncontext.getservletcontext(); string datadir = servletcontext.getrealpath("/file/upload"); system.out.println(datadir); for (int i = 0; i < files.length; i++) { file savefile = new file(datadir, filesfilename[i]); files[i].renameto(savefile); } return "success"; } 3.配置上传文件临时文件夹(在struts.xml中配置) <constant name="struts.multipart.savedir" value="c:/temp"/> 文件下载 1.下载的url(到action) <a href="${pagecontext.request.contextpath}/file/fileaction!down.action">下载</a> 2.struts.xml配置 <package name="file" namespace="/file" extends="struts-default"> <action name="fileaction" class="com.struts2.file.fileaction"> <!-- 下载文件配置 --> <!--type 为 stream 应用 streamresult 处理--> <result name="down" type="stream"> <!-- 不管实际类型,待下载文件 contenttype 统一指定为 application/octet-stream 默认为 text/plain --> <param name="contenttype">application/octet-stream</param> <!-- 默认就是 inputstream,它将会指示 streamresult 通过 inputname 属性值的 getter 方法, 比如这里就是 getinputstream() 来获取下载文件的内容,意味着你的 action 要有这个方法 --> <param name="inputname">inputstream</param> <!-- 默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文 件保有存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名, 这里使用的是动态文件名,${filename}, 它将通过 action 的 getfilename() 获得文件名 --> <param name="contentdisposition">attachment;filename="${filename}"</param> <!-- 输出时缓冲区的大小 --> <param name="buffersize">4096</param> </result> </action> </package> 3.action //action调用的下载文件方法 public string down() { return "down"; } //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容 public inputstream getinputstream() throws exception { string dir = servletcontext.getrealpath("/file/upload"); file file = new file(dir, "icon.png"); if (file.exists()) { //下载文件 return new fileinputstream(file); //和 servlet 中不一样,这里我们不需对输出的中文转码为 iso8859-1 //将内容(struts2 文件下载测试)直接写入文件,下载的文件名必须是文本(txt)类型 //return new bytearrayinputstream("struts2 文件下载测试".getbytes()); } return null; } // 对于配置中的 ${filename}, 获得下载保存时的文件名 public string getfilename() { string filename ="图标.png"; try { // 中文文件名也是需要转码为 iso8859-1,否则乱码 return new string(filename.getbytes(), "iso8859-1"); } catch (unsupportedencodingexception e) { return "icon.png"; } }
- 2楼网友:忘川信使
- 2021-01-29 07:13
如果是下载很好弄,直接请求一个资源路径或者把资源直接写到输出流。
如果上传要用commons-io和commons-fileupload.不然你得不到想要的数据
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯