文件上传
1.使用流进行文件上传,在JSP页面使用S标签传给action
<s:form action="upload6.action" enctype="multipart/form-data" method="post">
<s:textfield name="title" label="标题"/><br>
<s:file name="upload6" label="选择文件"/><br>
<s:submit name="submit" value="上传文件"/>
</s:form>
2.继承ActionSupport重写execute()方法,需要创建一个File属性(名字要跟jsp跳转的acation名字一样)和一个上传文件的名字,两个属性要给于get+set方法
public class Upload6Action extends ActionSupport {
private File upload6;//要跟JSP的action名字一样
private String upload6FileName;//获取文件名字
public File getUpload6() {
return upload6;
}
public void setUpload6(File upload6) {
this.upload6 = upload6;
}
public String getUpload6FileName() {
return upload6FileName;
}
public void setUpload6FileName(String upload6FileName) {
this.upload6FileName = upload6FileName;
}
@Override
public String execute() throws Exception {
//获得jsp中传入的文件
FileInputStream is = new FileInputStream(upload6);
//需要上传的路径
File file = new File("D://apache-tomcat-7.0.90/webapps/8.28shangchuan/WEB-INF/"+upload6FileName);
//创建一个空白file
file.createNewFile();
//构造输出流写入到file文档
FileOutputStream os = new FileOutputStream(file);
//创建byte[]数据存储单位
byte[] bb = new byte[1024];
//通过while循环判断输入流!=-1,让输出流写入byte中
while (is.read(bb)!=-1) {
os.write(bb);
os.flush();
}
if (os != null) {
os.close();
}
if (is != null) {
is.close();
}
return SUCCESS;
}
}
文件下载
1.使用流进行文件下载,在JSP页面使用S标签传给action
<s:form action="upload6.action" enctype="multipart/form-data" method="post">
<s:textfield name="title" label="标题"/><br>
<s:a>下载百度图片</s:a>
<s:submit name="submit" value="下载图片"/>
</s:form>
2.继承ActionSupport重写execute()方法
public class Upload6Action extends ActionSupport{
@Override
public String execute() throws Exception {
//下载的路径,可以找网上的,也可以设置自己本机的内容
URL url = new URL("https://image.baidu.com/search/detail?ct=50331" +
"6480&z=0&ipn=d&word=%E7%9C%9F%E9%A6%99&step_word=&hs=0&pn" +
"=12&spn=0&di=32127687270&pi=0&rn=1&tn=baiduimagedetail&is=0" +
"%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&" +
"cs=208342519%2C2537349107&os=1200942077%2C3336823907&simid=" +
"156522404%2C2792643572&adpicid=0&lpn=0&ln=1266&fr=&fmq=15354" +
"48500425_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=" +
"undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=" +
"11&oriquery=&objurl=http%3A%2F%2Fpic4.zhimg.com%2Fv2-7bbf5a93511d7114" +
"e3818d321a32b77b_r.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bziti7_z%2" +
"6e3Bv54AzdH3Fq7jfpt5gAzdH3Fdbcd0nnccAzdH3Fwgfoj6AzdH3F90bll8n0a&gsm=0&rpstart=0&rpnum=0&islist=&querylist=");
//通过url.openConnection获取到HttpURLConnection对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//通过HttpURLConnection获取输入流
InputStream is = conn.getInputStream();
//构造空的下载路径并创建
File file = new File("D:\\百度图片.png");
file.createNewFile();
//构造输出流并写入到文档中
OutputStream os = new FileOutputStream(file);
//构造字节数组读取信息
byte[] bb = new byte[1024];
//判断条件当输入流没值(等于负一的时候),就让输出流停止工作
while (is.read(bb) != -1) {
os.write(bb);
os.flush();
}
if (os != null) {
os.close();
}
if (is != null) {
is.close();
}
return SUCCESS;
}
}
注:多个文件可以JSP中可以使用相同的提交数据名,属性要用数组[]接收即可,其他基本一样