struts2上传图片
在WEB-INF下新建一个content目录,建立一个upload.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>简单的文件上传</title>
</head>
<body>
<s:form action="uploadPro" method="post"
enctype="multipart/form-data">
<s:textfield name="title" label="文件标题"/><br />
<s:file name="upload" label="选择文件"/><br />
<s:submit value="上传"/>
</s:form>
</body>
</html>
然后UploadAction.java如下
package action; import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext; import java.io.File;
import java.io.*; public class UploadAction extends ActionSupport{
private String title;
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
return ServletActionContext.getServletContext().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
@Override
public String execute() throws Exception{
FileOutputStream fos = new FileOutputStream(getSavePath()+"//"+getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) > 0){
fos.write(buffer, 0 , len);
}
fis.close();
fos.close();
return SUCCESS;
}
}
在struts2中,如果表单中包含一个name属性为xxx的文件域,则对应action需要使用三个属性来封装该文件域的信息。
1.类型为File的xxx属性封装了该文件域对应的文件内容。
2.类型为String的xxxFileName属性封装了该文件域对应的文件的文件名。
3.类型为String的xxxContentType属性封装了该文件域对应的文件的文件类型。
上面例子struts2直接将文件域包含的上传文件名和文件类型的信息封装到uploadFileName和uploadContentType属性中。
下面是sruts.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="mess"/>
<!-- 设置该应用使用的解码集 -->
<constant name="struts.i18n.encoding" value="GBK"/>
<package name="lee" extends="struts-default">
<!-- 配置处理文件上传的Action -->
<action name="uploadPro" class="action.UploadAction">
<!-- 动态设置Action的属性值 -->
<param name="savePath">/upload</param>
<!-- 配置Struts 2默认的视图页面 -->
<result>/WEB-INF/content/succ.jsp</result>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>
然后是web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts 2的核心Filter拦截所有请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
succ.jsp:
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>上传成功</title>
</head>
<body>
上传成功!<br/>
文件标题:<s:property value=" + title"/><br/>
文件为:<img src="<s:property value="'upload/'
+ uploadFileName"/>"/><br/>
</body>
</html>
如图
aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWQAAACJCAIAAACU1NWfAAAgAElEQVR4nO29eVAbZ77vzb9v3ap36lbl3jpV73nrnppz74mTOOPJZuMVm80IBBIItKKlpZbU2jcECAntO2DALAKxCkmA2MFLnJlJnMTJZCbbiR0nk3Nm5oztxJ6M1yTeEuIZ3T+6JbU2kB3bzJD+1rdIq/vpRU4/n/r9fs/TrbwoJkyYMOWgvI2+AEyYMP1j6D5gkZeXa+OUlrnviG7/wKfDhAnTo9DfLyxy3xGDBSZMj0F/17B4RO0xYcL0AHr4sEDHBelKb5yL1j7a2he2xMzb5jmb+9fEhAlTRj1CWOSyY8ZNa58IvTUXHi0x8/KYS+tfNyZMmNbUQ4ZFenfNvec/8C4p+EjZikUWmDA9FN0fLHJMK7I1Tt9rXVjkEqes3f6sZxsWWGDC9MP1MCOLOCZy32vdGsQPh0V0iYnBAhOmH66HBoscu/oax3xksPBgWQgmTD9cGz8assZyLhWN9QMZDBaYMD0MPY7RkDU2PQ5YYMKE6WHo0cLih9QyM2Yl0eSAZY29MGHC9HD1yCOLNWKElK0p4EiBRY6DKWlrznq2YfMsMGF6CNrISVnrxiApELnfYmc0GsVggQnTw9Ja9YXclbJjxqM92MqMZdH0lmvHL5gwYfrhevi9K0cuPFymZGuGCROmhyWsg2HChCknYbDAhAlTTsJggQkTppyEwQITJkw56eEPnWZseV/TOjFhwvR3qPvrqA99qkU0bQR03XHZlE3r7oIJE6aHokcLizXmU93vMdMb5zK/AxMmTA9Lj3ZS1qOARcbzPhApMjyOusSMHTrp7VqJ1dhkUEw/Wq3fx7L1w1zWr0GWB8sdspHo/o5z1rMtHQjR6BIzgQLUmzvPerbFG571bMNe0ofpR6qHDIsUHKx7kGj2Pp8tgsjInVxOlCI0A6LRaDIr0JvPerYlNqTthQnTj0UP/9mw++rD2WKB3Pt8vDH6L0pnPdvSQojYhjRYoBpmpgL2Qk9MP149TFis0WnXhkUux18j6HhIsEjdmkwFuGyBRRWYfrx6kKkTa8cCuUcKa3T1LD0/89HWhEVWrQWLrAFEUkqCCdOPSg8Y7efSbN0axLqwyHa6RwuLdUMOLLzA9KPUw59nkWNksTYXssEinUQp63P4EoiyFiXWYUFyHRQTph+NHlVkkcvKlE3ZMp305TUKIj8sslhiolad9XiW4JXo2RVYZIHpx6qHVrNYe+u6sMix/6c3Xq84ulaBMzlESClUnPUw4b2Sfv8Q+zFETD9aPeSh02ybHkp7dA6S7WhpygSL2KQsWIm5VymVlQQ6skzsxITpx6T1c4psPTPbph8IizWSHXTCsrayfyFMmDA9oNbqw7n0uvRmPzyyuN8jYMKE6TEI64GYMGHKSRgsMGHClJMwWGDChCknbVpYfPXjk8vt7u7u/vLLL+9hevT68ssvu7u7XW73Rt/pj08YLDaPtFrt5cuXV1dXv8H06LW6unr58mWtVrvRd/rjEwaLzSOlUnnv3r2N7kQ/It27d0+pVG70nf74hMFi80ipVH7//fdfY3pc+v777zFYbAZtdM/dAMGw2Oir+BEJg8Um0UbfSBugfzBY/MayNY86udFX8UOEwWKTaKNvpA0QDIsbaL1j3pq31fxObJkSjv8ntRmyKX3qPCV848aNMGXt+fWxc8AKU+J7JZ9qvcPkxdq/Y96KPmTKx1Rl+kqpClPy1jrEAwmDxSbRRvfcDZBSqVxdXb2WqhA5b6vp7WshcoY+bnr72rVr1669bdpKDqUsIbuiPiU3yLAt1iC+Ab18P0q+itSP6zVHlOkLoxXfJfkqUbttNb0d/+fLpNXVVQwWm0Eb3XM3QFlgEesCGXGQ3KfIoWuJ3pHUS942ZQg6UpkDN0vuWul9LVsnjl1V0vatprdTzg0fbc3ridEsWydP/feItwuR0RCJHQHdAoPFZtRG99wNEAyLqwm9Bfeoraa3kleSg1eTlbwO2S0P3SzeIr4QJOfFFuATvGXamnouWEFy0vpY+2xXkNj+lmnrVtNbSe1RJ0tcXuYPSNOkywqSkX8P1NXnJU6c/J2TvkGmDRgsNok2uudugGBYXEnRBPkZ46mJbCE5eeLKlStXThmfIU9cuXLK+ExeXl7eM8ZTyJ6JNsimzHrGeAo5T+rJUVcRP262a4EvBX2gU8ZnniGTn4ltQG9ErjjeLHHqxBb4RPH28TPA3yX+zVFfN9s3SD5DXBgsNok2uudugJRK5Z07d/6YosHqp5pOwIsnmp6qHkxeFd+Ql5eXVz2IWpH4kHK4vJSdkzdmUvYd1j3IU00nki4mdumodbH2yOf0Sz/R9BS8NcO1D1bnoY6T9UJRzVC6c+cOBovNoI3uuRugdWERu+XRsEA4AW+IfUhS9WDG1dl5cKLpKdTHtE/rHSJxdYld4501BRZxDiQWk2AxWJ1+bWgqoi9uLVgkfwkMFptMG91zN0AwLH6fIh9xS+NxeCEvvgQv+Ih5RN/vf//73x9v3AIvxJS2AjlUHnrt8cYteRlaJc4Ya4X+mHrAvLy8vLykBond0bsiVxTbeLxxC5FITNnz9z5iHrERufTYsbMLPl7iKyT+gdb75ogwWGwSbXTP3QDBsPjPZB3TbtmiPXZMuyVvi/ZYYl2sv/THVhD7/7M/S/dCdjym1RKJ8f36iXmoI6adMPG5nxg7C+q8WbVFe6yfGNs/9VCoNfAVZ1LSlkzNko7aT0z9d0GdMX4lx7Rb8jKcDoPFJtFG99wNkFKpvH379mdo9RHy8rZs2ZJH6PtsLR1t2JLcIm1F0iZU505p1UfIy9vScDSledaz9xGSG8ePkYBH8vY+AnKw7BeYtCX5YjMdNX7EDGePb0hthOj27dsYLDaDNrrnboDSYRHrjFn6TF5eHqEP7h0pnTK1L6K6UHLLPkJ8VRIoUGfMwIPE8TL0wQRBjjZsSRw6eYcMsIg3Qp0wE1PiR834MYOytsBgsUm00T13AwTD4lNM96kVzZN5Vb3ZEqPeqrwnNSsZd8RgsUm00T13A6RUKm/dunUW0+PSrVu3MFhsBm10z90AYbB4zMJgsUm00T13AwTD4gymxyUMFptEG91zN0BKpfLmzZunMT0u3bx5E4PFZtBG99wNkFarvXDhwtWrV/8d06PX1atXL1y4gL2wdzNoo3vuBsjtdnd2dn7xxRc3MT16ffHFF52dnW7spwA2gTa6526MnE6nVqtVYnr00mq1Tqfzq6++2ug7/fEJgwUmTD9IG32nPz5hsMCE6Qdpo+/0xycMFpgw/SBt9J3++LRpYTGOCdNj0Ubf6Y9PmxYWP8sv2bbz4M93lf18D+65PeXP78W/sA//4r6qFwuqXtpP2L6fuP0AcXth9Y6imvwi0s7i2phJ+UU1+YXVO/YTXyqoenEv/oU9Fc/vqXh+T/nzeyqe31vxwl78i/vwyEEOEHcU1ewsrt1VUrerFDZ5V2ndrpL4cZK8s5i0q6R2Vyl590HKnjLqnjLqXhx1bzntBxkHm7oXR92Do8KHTTZlDe8+SNl9kLIbXi6j7C6j7i6j7kaWY1uTTN51kLyrNEfX7Yy7JMn5iGvzS2rzi3MxKb+YtKMI8Xa0C2vW9ksJVyM+UJ1YTluzvbA66QhFNTsQk3YUw45dVUntztK6jb7TH582LSzCR387dfy96RMfzLzy0ewvz8z96uP5V8/Ov/bp4snfLb3x2fIb/7ny5u+PvPXHY2//8fg7fzrxm3MnfnPuxDvnXv71n46//V/H3vrDkTc+W3rt04Vfnpn/xUfzvzw9B/tXZ+ZfPbv42qdLJ3+3/MZ/HHnrD8fe+dOJ355/5d3Pf/He579874tfvvfFL9/7/JXfXDjxzrnjb//Xsbf+eOytPx576w/H3voDcqLfnv/Fe1/86sNLr/77l6999JeTpy+fPHPl5MdXXr9/n4R9BuXTV06evnzy9OXXTl9+7fRf7t+XXzt9+bWPYP8l7leT/OWrH335q3/P5A9h//lXH/75lx/EfQn2L5L9ygeXXnn/0ivvX0T8XpJPIP7ixHufn3jvi9jC5yfe+/zld5N8/N3Pj/8W9oXjv71w/DcXjv/mwrGEz8d99B3Y546+c+4IykeTfeydc8d+cw7e5fhvLiCHfRf++/nL7154+d3PY1d18cR7F195/9JG3+mPT5sWFjRFF0PVU6/pYzX62I0D7MZBTpOf0+gHmvxc3RBPNwzqR/mGUYFhTGgYF7UGhIYxQcswv9nPa/Rx1T1M2SG62EMR2Mmgjcy3k4V2MuSgiJw0iZcu72AoO5nqHqCxH9T5BYZRyDgGGcdExnGxKSBqHRPqR/jNfp7WB2j6AHUvR93DVh/maHp4TT6BfggyjUqsEzJ7WO6cVnlm1N65JLdlsXd9q7yzKu+sygN7Bm3lela4Z5SeWdgK96zCPRNzROGOyF0RuRP2NGLXtNw1nfjonJY7p2WOaZljCrbUMSW1w56U2iclcdvCsMW2sNgaFtsQi6xhkTUksoZE1iBsyBKELBOQZQIyByFzEDJPxC00TQhNAdgCU0BgCvCNsMdhg61xj6HNM4xxDaNo85INwm4dA2OHEhjhU4wLYucSmgJC8wRkCUKWEGQNb/Sd/vi0aWFBkXbSFD10VS9d089o8DEafPUNvnqNj6nxsbSDbO0g0DTEbR7m6kZ4zSOgbgRsGgIafBx1L0vezZB0UIXuOp6thmMislurAVMN10wCbbUCB0Xkoknb6IpOpvowR9vHbR7k60cEhlFhzAL9KNg8xG3wcVS9TGVPvbyLIe+kSzsY8k6WugdoGuAbRiDTuNgakjmmFK6IyjOn8s6p1gfBevZkttIzp/TMKdB2zyncswr3XLJnlfHGSIOE5e5ZuWtW7pyVO2fSLXNGYEsdEaljGm2JHfYUYtuU2DaJtsg6KbLCpAhDlmSbw5A5BJlDkCUEWUJCc0hoDsIWmCbi5psm+KYJ0BhIuDUAGlLNM4zD5hrGAcMY2lzDGNcwBm/iGcZ4hnEQdmsANAb4RtRfU4AfO6PAFBSYQ0ILBot/fFFkh6mKXrqqn64ZYGgGGBofXe2jqfrpqj6G2sdsGICRwdH6OfBfjY+p6GFIO2lQO4XvquVaiUxjJV1XSdcRmHoip7UGMJNAGxlyUaVtDEUXU93D0fZzm/xgy4hAPyrQjwpaRgW6UbB5mKsd5Kj7mIoehqyLLjlEE7dTIC9V3M5QdLEa+ri6IYFhFDJPSGyTchgWCC/m41Z759Woj+vbM59EB3cGx7kgRzkNGRnayF0xO2djToFFEi8kCUagbJuW2KbFtmmRbQqxFTFkmURsDUPJyBCaQyiHBaZQ3HxTkG8K8o1BvjEIGoNg6wTYGkiyIcBDmRszYBgHDOOAfgzlcXgl1zAO6Me5CDXGeTAv0DbCVJrgm4J8U4hvCglMoY2+0x+fNi8sFH00tY+uGWRoh+q1QwzNIF09QFP205R9DJWPofYxNQPMhgGWZoCl9rFU/fWKHrqkkyJoq+M5a9hWQn0rnqYrJ2txZC2erqti6omAkQRayZCTJm2vV3axNb2A1sdr8oO6EX7LKKgbBXUjYPMwTzsEaHwsVW+9/DBd0kUTd1Agb53ATYa8dNkhproHaBwA9SNCU0BiC8udEaUb7uRwt194UMO8mFd55pWIs/JCnslJsPDMKzzzGZo5455FW4bwArHUOSNxRNJhIUZZZJ2C4o7DwjIJWSaF5nCKBaawwBROg0UIhDGBdusE2jzDBBeFCa4hAMStH8/g+HrDONyelwhM4siYQM5lCvFNIb4Jiyz+8UXX+BkNw8zGEVbTGKtxtL5hiKHx01Q+mrKfrvIxVL56la9e1c9Q9TEUvfXyHpqkiyxsI/Gc1WxLFaO1gtqMq9MeJKnLSGqYF0SWgcQ1k4UOurSNqezmNMRhMQzqRkDdMK9piNs4BGj9bLWPqexlyA/TJV1UUQcZ8tYKXHVCN03SUa86zNb6eLohQeu42BKWOyMK15zSPadyz6k88ypPRhAsqryLuVLDs5BGjSQr0HbDhhkRW/bMxbfK3ZmQ4ZqTO1HhhmtO7pyTOWdRjvECtj0isUfikQUCC9u0yDqdmRdZYCEwhQXmsMAU5qMMGkOgMZQOC17MKbDgrg0LfQDQB9DL3OTwBGydAOG/CDJCIAaLTSBm4zi7OcDRBbgtE4AuwG4cZTYMMdQDNGU/PWaaopcm76VJu6nSbjLUQQJdRLa9qt5YQWkpq2ssrVGXEOQlRHlZrbqcoq1k6KqBVjLfTpd4mcouAI4sGgfB5iFQN8xrHorBYpCt9jFVffWKHoasG44sagWuOoGbKulgKLpZmj5us19gGBWZgjL7tNw5o3DNwshQuufTkLGYzWqUUevT2ZGw0rOgSHg+g91zCs+80rOg9GZrMJ+EiWRkpFBD6piBjfDCngCHKM0ocCDsEMaiDIE5LMjEjhgyQjFkhMDWINorJ89Eo9GVk2d4hgluLMpYPnkavkPufLuq71qKAQLx8muno9Ho8mun42sGIm+srt6Dd1k5eRpsnQANE2ArTIoQH0tDNoEAfRDQh3mGMNga5hlCQPM4SzvCUA/SlP00RR9V3kOVHaZIusiSLrKoow7qIPE91YC9imWuoLXiyM0HSQ0lREUhXlpYKSmtluPq1BVULYHZQuJZKJCLKT/EUR8GGvq4cHABk6JpCGgcArR+jmaApe5nqnoZ8h66pJMCtdUJXHUCF1XczpB3MVU9gNYHtowIWwMS66TMPi1zwAMNM3LnrMI1p4RjDThAyBxBJJEiJ2rErEyxZwEVdyzAmEBtWlB4kAVljC8Zs5jk0gaSqkidMwmnUSMRYsCwsE1Btiy5iXkyc6ARcwIWMV4oXTOXr9+89tXta1/dhmEBe/nkmcvXb8pdESTQQGFC5pi+fA3ZZfnVj4CWcUAf0Hctnb90Te6c5hkCA5E3v7l119C9DBomeChebPSd/vi0aWHBa53itU6Bxmm+cQo0hBFYqAZo8l6KrIcs7qoTddQK22uFbSSBl8T3VPNcBLYNzzRX0Axl5KbSGk0RQX6gQnygQlREkJbWyHFkNZ7eSOTAwUUbU9HFVvcADf3cxkFe0xC3GfYw0DQEaP2chgEkGZF1UUXtMCwokJcuPVSv6Gap+7hNfr5+FDIFxZawxDopsU7BgbrUHpE5I3LnbDzcULkT9Yh40IHQoW1R3bYuNTKAIxUZqZ5XeubjuyfDJUNugpRC0mKNpCgjS26SlJggnhLZpiDrZLZaRjos4FojPwsyVk6egVMShWvm4l++Goi8CYMjkZWkIWP5tY84LeMwL+BkhGsIKJyR2O4BFC+CG32nPz5tWliAxghomuabpvnGaT4Mi4ZhutJHkfWQxZ21wo4avpfIc1eDbiLPReQ5iYCjCoYFvRVH0ZXUNBQS5AUV4oJy6EClpIgoKyHJcRRNJVNXw7XUWV7erzleoD62X3O8QHVsn+pYgerYPs2x/U3H92uOF2iPFaiOHVAfP6A6vl97vNbyMlngruO7KJCXJumgyzqZqh5Og4/XPCQwjAlbA8LWCaExKDSGIFNYZJ4UW6cQajgicueM3DWrcM2lRxxJvMhOjTRwpEIEzYK03Af5mB6MxIodiQwlAZHs5QypY0aCdnIRFE0NCF0BTYk1zJOQeTIDLGLIgJ0Oi4GZNy9e/urzL6/Dd8h7Z8/xDIGByBu3737ni7yRDIvTgD4AILxAkKHvXr7+9W1D9zIvXrZoDYKtGCz+8QWaZkBjBIks9GGgcYypGaIp+ini7lphRzXoJXCdVYC9CnBUAQ4C4Kji2CtZNjzLXFFvxFH1JbXaQqKiAC/eVy4qwEsOEKSF1fJSsrqcriMApj2qoyL/b8/duBmNRv/2t3t/+9u9e/e+/9vf7gXe+F30b3+LX8OFK9frvW8daDxeJ3DVgi6ywEOBvFRJB13WxVT1sjU+oGm4tE7x3J6qUrISbBk7SFE9v49YRtVAprDIHE6lRizcgKuh6jgv7tNr1EFSrERlPen5S9aiRqYxFJlzTpacmEicsawEFWuI0wZNMoywptdBTWFhCjJMIb4ppHQjsEgpYYCtE4Mzb96+uzo48+bAzJu37343EHkTLnzKnChYJPPiTxevvvfxOV58iCRW5tywW/yxa9PCgtc6zTNMcQ2TPH2Yq5tgNYwwVINUaW+d6FCNoJ3Ac1ey7RUsSyXbVsmxVXIclRxbJduGZ1nwTDOO0Vpa11RUrS6olBbgxQVVkgNEeSFJUULW4Bi6SsC0R3n09d/9he49dee71TUsOfzqne9Wn6N214IuEs9Zy3fVCTxkyLuvAnx2e9mz+bhtOyu27cJHo9Ftu/DbdlVu21UZjUaf20N4fi/xhX3EFwqqcfQGkTksSaYGwgvvghpxHASoomYKStoyeb3qqQp1/NTkJXdYpOYmc1LnrDQ9MUGQkZiUIUlNT+LhxhqDJllgYQyBxtDKyTOXr99UumfgoZNzF6+9d/YcPMARHyuROSOXr2eAxZ8uXv3TxauAPsDVJw+OtE5s9J3++LRpYQHow0BLGNAFgaYJduNYvcpPU/jIksMk4aFq0FsFOCtYtgqmpYJtxbOtlRwbAgu2Fc+ylNcbD1J1RSTtAaKigCg/UK0oJKkL6zSl1CYc01AJWPcoj0aj0TvfrS6cPP08s2sH6N8jntgrn9ynnoe9Xz2/RzGzXz1foFkp0gdreM5qwF7Dc5JAF0ngfvqFkhy/xfN7iQLDhNAYhExhsWUSRkaCF/Fahhv2nMo9p0JvypitZDGRq88voRC5ehRNssPCmzSkgpRIvfMK90JsFHZeYg3XCixiazhjLUOaMBxrRKTpszPs0+mxRqbEJEM5g28KKd2zl6/fXHn9DDxs4Z89dfHyV2hYvH/2PDzgGq9iyF0xWKBGWOOkSBlPhYdFHuVd/PelTQsLZlOA2RhgaseZDaP16mG6YpAq66sTx2DBdeHZtgqmBY+GBceGZ9sq2bYKlqWMYSihNBeRGgpJmqI6bTGlqYSmO1hvKAfMVaBjj+JINBq9893qC7SOP3xx49bd1Xv3/pruO9+t/unPX5XKA0SuncixEQE7keuoBp27DrKffqHk6RdLn3np4DMvlUWj0We2457Zjtu6AxeNRp/Nr/jZTvy2XZU/311VUqfgtYyChnGBIYAgwzolsU3LHRGkiuGaU7pmFU7Y8JRKmCazSIED7u1w529fVLdnxIQhv4SSX0KJRqPwQgoy4oWM9GqowjOv9M6nRxwS22QVp8U/HqnitKQMuCZPykgeNIHDjSyzP5MmgNrScpM0Xqg9c5ev3zzy+hk40FB5Zi9fvwkDYnDm1O27q4Ozp5CFmTfhuobcNXP5+s3lk6djWUnk8vWb7358Dl0EjcFiAjRgacimEE0zTlOP0tWjdNUwTemnygcosr46yWGSqLNG0E7keaq4zkqOvRKwV3HslRx7JcdeBdgrAXsVYMdzrOVMcxnDUErTldB0pXT9QWZrGcuEA6x40EmEvLsVS9Fo9M53qy8yDi2/+Ydvbn93685qtW4J7atf37l376+vvn++WDJMBOxVHCuBYyMANiLgIPKcRNC9q4z71AulT7948OkXDz790sEojIwduK355c/mV+yvljAbBlnaIU7jENA8ymsZBQ0BQWsixEAKGY6IzB6R2aaliKcktimpbVrujMhhXnhRvGhPc9uium0RxoTZbI7//ed/3QpTI7+Ekl9Mzi8mx5cJgD65JpqBIBLbFEyKaDS6o5icPjtD5swwViKNzwF1zEgd8MzxeDkjaRpo9nETpIQBYwJ9Pxx5/WOBKWzsPXL329XYmjNwuHH77urgzCm4GoreZfnk6fikDFjfrd7zRd4ADAFkLBZLQzaHyMphinKYohqiKocoikGKfIAi95FlfbWSnlpxZ42wo5rvJfLcRNBF4LmIPCeB5yDwnESeiwC6CDxnJddewbHiWBYc21IOWCsAG57nqOS7iVBbjeTQbsliFIYFq3vql5/dvrta2TBb2TB7687qV7e+vfb1HfhjHBYEwAFHLlUcWxVgIwAOIs+55fniNa7/2fwKhtpXrxmAkQE0j3B1cIgxITSGkEKGdVpimRSbwyJTCDKFIFMQtsgcltimZI6I3DWr9MC8yAKL9sywMJlM2S4sv5iM4kKG4VWJfaqKox8cj8DtdxST5XFYoGoZMhfiePkzddq4I4Igwx7JOHMcPdoaR0a22eIop9ZB06aNJyaApkwYB1DLPEMAg8UmUa18qE4xVKcYIiuHKAo/ReGnqvxU5QBV4SPL+sjS7jpJZ62ooxZqrxF6awSeaoG7RuCpFnproLZqqI0o8BD5bgLfVcV3EwQeIuQlQu1EcUeNpIsk694jPWKZOvPyR5d3gP7R4x/fvLNaKg2WSoPXv7579es7l2/chj/eu/fX47/5rwLIT+A5qwB7JWCL5ztVgHPLc0XRaHTHgZqnXix9KjmyiMZgEeOFn6Ud4sC80I/zDQFB6wRkCkGmkLB1QmAI8PVj/JZRvn6UbxjjG8YErQHIHJLYpuTOGYV7TgknI/cDiwoitT+wlPA47MXomrAgAPodxeQdxWR/jBRRBBZzcnRwgYJF9jnjqXO60BVQcdoEDcg6mbBlEnlo1RLOiA+hKekxE+RJE1MQcUZqpM0cRwqcRgwW//giKYZqlcNk1TBFNUxVj9A0w/SGEYZ2hNEwzND46SofXdVPU/RS5IfJ0q46SUetuKNOcqhO3Fkn6aqTdtZKDpHEHSRxB0nSQZIcIkk6SZIukrS7VtZTJ+/dCc1EY5HF4PLpm3dWC3j+Ap7/6td3/nz15sUrN+GP9+79debVzwr4PiLoruI6KwFHJceGZ1vxbFsl4HjyuaJoNPriPgKB70HSkB04qrLv2fyKaDT67E48Qz0AO8GLphGgeZSrG+W1jIGGcVA/DupGuc0jQOMQoB0CmoZIAnc5w1An8gqMAZE1LHVG5K45pWdO5UfkIvcAAB8zSURBVF1QZS9txmEBKxqN7i2ubHENxeyHrXP5o9FofgkFFUosxryg9C7sKCZHY7iJKwaL5MGRdFi4Up9SQz+ZtvacLmQCaPaH0yDrpNASTrIZedIkfbIGmBEcrcH4NFA4AeHFnih73Hf2xmnTwqJOPUpWj1I0Y7SGcXrjOKNxnNk8wdIFWboAq3mc1TTKahxmNgzWawboqj66soemOExT9NCUPTRlL2yKooei6KUoesnyXrK8tw5xX528Px+avnnzmzvfrb7E6XGHf/v17e+207q307phWPzx4g344+rq94ETZ/eBfUS+l8BzVQFOPMeGZ1leKmL8288PPPlcYTQa3fJCyVMvlj79Ulk0Gt2aX7E1v+LZnfhoNPrsTvyzO/H7qyUxXgwyG/xM7RBLO8RuHIapATSNcLRDrIYBptrHVPcTuY7iusZoNHqQ2kIWt0OWsMQRkbtmFe45ZTwTaVtUty2qkg3DAq2X9pZJWjrjFjUfYisctfzWaCoskpCRDRatLUNeedvyT//3u/v2eWXeVp0/kZJkeMYE/TzrLJoXaeOskdT4Ap4zDmcliFPwkXhZRlq2kpqexMCR9KAaL/nBViyy2AyiaAO0xiC9KchoDtXrwix9mGWY4himAEMYMIQAfZCrn+C2jHN0o+ymIbbWz2oYYGkHWNpBZqOfqfXXNwwyGgYYmgG6eoCm9lFVPorSR1H6yApfndyXL56Kw6J1+K0b39y98JdvthHdsLfTuisbZj/+r8vfrd7rW/hwD3iYKGgjgO5KwIln2yqY5v+zbX+O3wIdXzDUgwzNYL3Gz2zwM7V+lnaI2eBnqn0MVR9d0VvJsRTWNKx+/1fYZXQDVdYlcUzLXbPyGCxUaZiADQ+a/vO/bjWZTM/tLH5uZ3FpNcBVe7hqD1vhpEIWIldPAFoInJZoNJpfQlF6FxUZJokv5hcn0pm4Wrfmf/bST1af3/odyP62ruq7n/w/v/qX/3+cqkikJNlg4ZqVuxKPsa4Ni7SxkmnIOhVnh8g6lZ6nZMpN1ixtpIAj5od+6/7datPCgtEyVd8yVa+fZuqnWYZptmEaMEa4pgjPFAHN03zTlMA0KTCG+cYgaAiA+nFeyyhsbssot2WU0zzCahxiaofqtUP1DX66xk9TD1JUAzAsdvCDMCxeZHUruk/e+Obu785d/fRPV+C/W8rMsO/d+6sr+Ns93G6ioJ0AemBYlDPNLx6g/59tB/7t54VPPle05fnin+VXvPvBmbt3v33jrXd/trvq2Xw8HFY8m4/fT5TQVQN0lY+uHqAnqDFQrxms1wzWqwcYqn66sreCZdlPVF+8/DXa5UwjXdUjc83I3XMKDwoWWSZi/b///X+YTKb/+f/9C11io4mtZKG5mqsnAnoC4hYC0BJN1CwWYWTErfQu5KdHFhcvfvbST6Lvvhv98MNTTz5x6sknoh9+GH333c9e+okBji8yPVGSAovUgdX1YZE0XJIYNEl3Sm5iQZ5wTTgpQwnzTeFEhhLzRt3hj1+bFhas1lm2cY5tnGUbZzjGWcA0yzXP8cxzoGVWYJ0VWmcg24zIGhFZp0WWSZEFfoNbUGgKCk1BvnGCpw8AujGObpTVNMLUDjMahuhqP0U1SFb4auW+HWACFs0Db/zx4o0Lf/nm88s3v7x266tb3359+7uvb393795f/3jxBt9zYjdwiMhvrwK9eMBZwbbhmGZcvamEqtuF4z/14sHaevH1G1//5fLV3aXUK1ev/8cf/vT8HvxOHLcKdNbJeqgqH1Xlo6l8NJWPrhpIIEMzwNAMMtQ+uqqPpugtIKrP/se5dOPZFqlzRu6alXvmlGs+8K7yLv7zT5+JRqNPPb+vmmsgAHoigCZFMiw88/FJFoi9C4qMNYsPP/yy8OnvHeZoNBp95ZXo5GQ0Gv3eYf6y8GmP1IsuW8icqcjIWOmUIG/WSQyRiO2JYZEYL5DlNHxkQEbmWkYmZKQ9h4LBYrOIa13kWhcAywLXssC1zHMt86B1HrQu8G3zQvu8yD4vdsxLHHNS56zEMSODB/bht0XapkSWsNAUAg0BbkuA0zzGbByt1w7T1UMUlb9O7iPJ+ndwg787f7Vp+PTzzK7AiU9UvSfFHa+A9jm2YYLVMgZYpviOBajtZXHHK/2L/76L1UZAYOGqYNtxTEt+Gbi3uIbOAq/f+Or2nTuuDt+//fzAgdqGn+XjFlZ+cffutx+e/rS8mvncbnxhnYYi76cofBRlnBeDdPUgQzPIaPAzNAN0VT9N2VtK1b+wH3hmB+Wpl2qffqn2me3kbXvqd+PEJKhN4ohInTNy15zCg4QDa8Niy8/3wlxIwQQBaKlCwQIJKDzzcs+8HEFGJlg4nZcpxaeefALGRDQajU5OnnryicuU4iMHGbEJF3OyBB0yT9ySOWfTHz8Tx4yeEh7/+ACwgLLBIjsv+BgsNoEEjiN8+zJoX+LZlni2RZ51AbQtgNYFvm1B6FgUOxYlzkWpc1HuWlC455WeeYVrTuGalTsjMkdEapsWWcICYwg0TAC6AKtptF47QlcPUZT+WrmvRtq3gxssU70Cz+DU9L1uHj6VzXzPiV2stip+RyXoxXPdFRznQYbpxX1VV65ev/D5Ja6o8d+eK962txbPdREEHQfrzc/tp76w66B/PHL12o1r17966UAtSdpbK+sjy/spSh9VNUBTD9LVfobGz2gYYmj8dLWPpuyrk3RW8dx4eI4Z10EE3TWidpqyh2cIiGzTEmdE6pqVu+eR195keTIdhsWTP99bFaMDGhNVMVjsKCYnsg9Pghdyz3wVpwUeOh0OziH/G5zOi7t+eurJJ6KvvIKseeWVU08+cXHXT48cZMhcc9IYI2SJd+egZ14kJoanFCzEKFikPEIitqXzIissIMt9BxcxXgQxWGwSidxHIddRoXOF71jm25b4tkW+bRG0LQjsi5BjUexalLqW5O5FpWdR5VnUtC1qvAsqz7zKPadwzcocEbF1CjKFQUMQ0AVYTWP12hGaeoisHCTJfURJ7wH18RfZw89W257cV/NshepFUst2un0Xp6OA7yuRh4rFowV83y5W20s020t1erqmrZLfgQfb8DxPBeAq5zh3lQuf3o7fmk/YiROWc5wVgKsCcFdwvXheGx5sP8i0vVDEemp7xdZd1XsJCiLUXS3uIUl6a+V9ZIWPovLRVDAvYFgMUFX9FHkvRd6DWNFDU/XVa/2cllHQGBRaJyHbtMQ5I3PNyZE35c3LPQvypLdmLSg9CCzWmI4FKwaLeQXqOHIUMkTWcBWnBeHFr399Yct/S09DLmz5b4cgB+qhsjgy4qEEEnRInbOji++sfo+8q+r4m5/AOYh14GV4Lubq9/eGF34dJ8WxN89Go9Fjb55NfhPX1PD826vf3/vgkwuJp9Gsk0Pzb39z6665/5jQEj76xsfRaPToGx/HixfGviPxU/hn30LDwj976ptbd409K/7ZU4/oBv471H3AIi8v18bpLXPcN/dTrCux57jIfQxyHRE6VwT2ZYF9SWBf4tsXhfZFkXNJ7FqSeZYUniVV27KmbVnbsdzQtqTxLqg98yr3nNwxk4BFS4DVNMbQDlPV/jrFQI20nyjurYS68cKucv4hHHgIB3bgwA4cCC93lvM7y/mdFfzOCn4Xnt+J53fi+YfwYAce4YW3guuqAFzlgBPHduBYdhzLjmM5cGxnGdtVxnHhOG4c4MUBXhy3rYLXDu9YJegkQl2pyFAP0tSDVJWPouyPjez2wKaoeukNg0zdKGAIgKawwDoF2SIS56zENSd1xadOzstd8wl8uOef/PneaDT6zz99ZkcxOb+YDOcU0WgUDhbirgL0MCPkCUagl5N5ARc4L15MKnBevPjZSz/R6/zSxKPrcV6k2j544vMvbzQdWpY4ZkYX3vnm1rfWgZe1hxav3Lj1wacXYDrc/XbV4juubV+8cuPW9a9vX//6dgosGtoXLl35+ptbdz/49EJsRsYkZJn84JMLH3xyQdM2f+X6TXjHo69/DA+OwBPG3//kvMAUOvL6mbvfrhr7jsRCjND7n5x//+z51p6V85euPaw79u9f99c5H7jPZ9sxZf3DhYXYfUzkPgo5j0COFaFjWehYFjqWIPui2LkscS3LPcsK77K6baWhfUXbsaJtX25oW1R7FlTuebljRmydjsOC2TRK1w5T1H6SfKBa2kcQ9eChrnJ+J0yKMl5HGS/Oi85kXnRWILzoxAsOIbwAvXiuuxxw4djOMqbtINNWyrSVMu2l9fYSpqOE6SxlOkuZrlKWq5TtPsjxlHE8OMBbAbZX8g8RhF1EqLta0kOS9tbK++sUvjp5f628t1beS5L1kuQ9sOsUvTTNAKNphK0f57YGQVNYYJ2GbBGRY0bsnJU4ZyXOOdhSFD7KaKoz/3nxX5/Zke2fdEcxGYWJGB3ccwleuDPwQlHJffWf/umjJ564/eIzl4m7P3riiVf/6Z/cUm8sppiTJvNCmmzUy3IijYeWLl35emTh1yMLv/7m1rdW33GRbRpmBEwHyDbV0L6A+ogYhsL5S9fRkYW5/9g3t+4Ozb0Fpx5qL/zU2cdw3oHEDr1H4k+gHXn9jMAcEphCxt4j39y66589Bc/7fFh37N+/Hi0s0hfWPubDhIX7mNh9TOQ6KnIegZwrsIWOZZFjSeJclrmXFZ4VZdtKHBYN7cuatkW1Z16JwGJKGEtDmI2j9IZhispPkvuIkj6CqAcvRGBRBnYc5HUcRHiBwALH7yznd5ULuioEXXhBF17YVQlbcKiS34EH2/E8bzngwrEcB+ttpQxrCcNawrAWM6xFdFsRw1bEsBcx7EUMRxHDUcxwFDMcJfXOUqarjOOGqYHnd1QJu4iiw0RJD1HSUw1b2lMj7amR9dTIekiKXop6gK4dZupG2YYA0BoCTZMCy7TAFhHaIpAtAtlnRPYZkWNW7JgVx9hRJ3ZPn/hwTwVne1Hd9iLy9iLyDtjF5O3F5B3F5EpOCzoSQQxnNwg4UPbMi6zhar4FsoYMLUOmWkH3//qX7v/1L6ZagUE3JEUlICmGc5DEGsdsfKDUOvDyjW/uWH0vH3vzk/OXrscDh/OXrn/w6QUIBYujMXZAtqnh+V9fuvJ1Q/tiDBZIteLoGx9fuX5T3TYP5x3qtvkELEzhI69/fO7StXgt89yla+9/ch5ePvL6mcvXb6o8s3xTEDRhk7Ki0bz7UcqO6cuPHxaQ8wjkPCpyHYnDQoR4WeJalrmXlV4EFpr2FW37iqZtSe1dULnnFa45qSMisk4JTGGeIciJwYKs8pPkA0RJP0HUi4e6ywVdOP4hXBwWsTQEx+/ExUhRIezCC7vwUBce6q6CuiqFnZWCjkp+Bx70lgOuMqajlGEpoZuL6eYiurmQbi6kWQpplgM0K+z9VOt+qmU/xXyAYi6kWYvotmKGvYTpLGW7cIC3HGzHCzrwgs4qqIsQAwdR2kOU9dbI++pUA9SGIXrTKFM3zjJMAIYQzzQJmqZA8zTfMi2wTguskQQ7bBHIHhHZZ0T2GbFjRuyYkSAByKzEOSeNOV5HgCMRdEYjizFC5pqTuedk7rkkmiRaxvZNZcScJDkZSZ5YAQ+CRM5fuv7Bp5+LbdMffHohCyymGzoWYVjA7NDE2AHZpmBYCOH3hlsmz126fjQWRwjMYbUXgQU8n+L9T86fu3SNH6tlomFx7tK1I6+fgaub2AzO5Ba5ZRAZ169LlhyP+QAS2I8I7StCx0o8rBA7j4idK2LnstS9Iodh4V1Rta2ovcuatmW1d1Hpnle45uSOWYktAlmm+MYw1xBk6wL1jaN07TBZ7SfJB4hSH0Hci4cOVwi7ygVdOH5nGXioLJ6D8LtgUpQLuyoQTHThoe5KUXclhAoueF4cx3WQaSuhm4tppkKaqZBmOkAzHaCZ91PN+6mWAqqlgGIuIJv21Rn3kgx7SYa9tYZ9ta0Fda0FFFMh3VLEsJUwnaUcdxnXi+N3VAi78FB3pbiHIOkhSnuJ8n6SaoCsGaJqR+nNY/W6AFM/wTGEgNYwYAxzjZM80xQI2zzNh/GBEGQ6gQ9bRGSPIPiwz4gds5KE5+KJDJLOOJPYIU2hA4o4yU7ihSxz9oH4/KXr5y9dF9sjYlske2Qx3dCOhgWCFTj1QCILy5TQMjk09/Y3t+6a+o4K02AhMIfh8CEpsriIwCJe2sQmZWVqcT+wQONg3ZDhfmOW+xLPusy3LQvsy5BjGXIkYCFxIbBQeFYUnmWld1npWVJ5FhXuBblrXuaYldgjIuu00DwJtoYAwwRbF6hvGqVrRyjqIZLSXyP3ESX9VaJePNSDh7rLhV04QReO34kTdOIEXeWCrnJBV4WwqwLqwkPdeKgbLzpcKTpcJT5cBfNCcKgS7MDzvDi2s7TeVkw3FVJbC6nGQpgUNPN+mrmAaimgWAoo5r21xt0kw+5q/S6iLu7d1S17ag37KMYCuqWQYS9muUq53jJ+B07YVQF148U9VdJeory/RjlQqx6iNIxQG0fpTWMMXYDZMsE0BFmGENsQ4hjCQCtirnGSa5zkmSaR0MM0BZqn+GY0PqaFSPIfh8iMyD4jts+I7TMS+yzCkWR2JHEk5njAEodF7GNqfJGCjPN/vn7+0vX4TM1jb35y5cYtbftinA7H3vwkAYvrCCzgTSk3xvlL14UWJHAQWMKw+eawKlaz4JvDfFNoJZFrIDWLldfPgKbg+2fPn7t4DZvBmb3R/RQsc4fFA58lF3EtSzzrEt+2JIzBQuRcETtXJM5lqWtZ5l6Su5fl7iW5a1HuWpS7FmTOOal9VmyPiKwRoXlSYArzDCFAP8HSBeqbxujaUYpmqE7lJykGq2U+oqS/StxbiSDjcAXUjTYe6sZDh/Giw5XinkpxT5WkhyDpJYgPV0FdlYJOPNhREYNFEQwLmqmQbiqkWw7QrQfo1v00636atYBi3ltn3E0y7CK27CQ25xOa8qsa86u0+YTGnUTdLpJhN7l1H818oN5RxHGX8trLBJ04qKtC1IOX9BJk/UTFQI3KX6sepjSMUrWj9KYxRvM4Qxeoh6mhh8GBsINtCHFggsBuDXONYZ4xzDNNgkjykhqDCK1xgiAQEdlggsDsmEmEIc5kp6xM/ZgaUDQeWrpy49aHn34usUfE9ggcSmg7EECIbNNH3zx75cathvbFjJEF2ucvXX//kwtC62RSecIcFpjDfFNY5ZlDpSEhZQIQSJEC/rn5ODVAUxD++MC36D+cHiYs4JXov2u3f7Cz5CjAvMizLoLWJYF9GbIvQ45lkWNF7FgWO5YljiV4RpbEuSh1Lkjs8xLHnNg2I7LOQJZpoXmKb5rkGcOAIchBwYLaMExWD9XCvJAPEGU+orSfIOmDqQEbL+rBi3sqxT2Vkt5KSW+VpJcg6SVIeonSXqKkt0rUXSnswsfSkFKmrZhuKqSZCunmQoa1kGGL2X6Abt9Ps+2jmPaQWndV63cSdfmEph1V2u2V2u1V2nxi886all21hj1UUwHDVshylXDbSvmHyoRd5VAPXtJbKe0nyn1E5SBJNVSrHiY3jFK0o7TGMXrTOL15nKELwK7XBepbAsyWCcT6CaZ+gqUPsgxBtiHIMYQ4hlACH61hHpLCoGOQab55WmCZElqmhZZpoRUdgMyI7DMiW0Rki4jhemosGBE7ZpGoxDErccALcc9K7DNoH3vzE/T/1visiuGFX8OTL+5+u2r2HY9XK9CNU5BxDoaFZXJo7u1Ll79We+fRCQh6xyOvf8w3hQZnT8VPAQ+LDMJv8fTMwLBYef3MA9+f/4h6kKkTa5Bi3a3rnuJh1TsByyLPugjalgT2ZaF9GbIvQfZlkWNJZF8U2RdFtkWRfUFkm4dsc0LrDGSZEZojfPM03zwFmiZ5xjDXEAL0E+yWAFMXqG8epzeO0rSjFJgX6iGSyl+j8FfLB4kINWBw9BMkfQRJH0GKmCiD3U+U9ROlvURJD1zmxIPt5VzPQbazpN5WzLAW19uKmfZilrOY5SxmOouYriKmq5Dh3E+37aOYdpNad9UYdhJ1+cTmHYTGHcTG/GrdTpJ+F9mwm2ouYNgPsF3F3LZS/qGDgi4c1FMh7sVL+whyH1ExWK0aIqkTvKBqR6mNo7QmhBr05nF6cyDOjswQ0U+w9EF2DB9AHB8xgnATAcgk3zQJpzBCVPQBByApYUgio4HjEYQpkVhqMyO2RZKNnmEVEdsiqJ8yS3L6mvhT6ujS5vufXBBYJpEfQERN0+Sn/JZq7GHTROXi7PnYey4mYD/wLfoPp/uelLVuB443u69KRI5jKLkXMriWRZ4tloYgsFgS2haFtkWBbUFgnRdY5gXmWb55BjRFQFMENE3xjJO81kluaxgwhDj6CXZLgKVDYMFoHKNrR6naUYp2hNIwTNYM1aqHSOohkspPUvprFIPV8sFq+QBR7qtOc03MMC8IIoQXOJ7nIOAq5ThLAVcp4C7lekq53lLAWwp4SwBvCdtTWO/cT7cXUC17yKbdta27SIadNS35NS07aw27yK27qaa9dFsB01kIeErAjlJBV5mwG4GFpL9K5iPKB4hKfw3Ci5G6hlGKFjFCjcYxWuMYwo64YYI0J7GDqQswY/hgtUywW4JsfZCjD3L0KHzEkhfQFAZT8hfLNN8yxTdP8c1TcCIjtE4LrdOQNSUYQXV4K7KQAoW1P0KJJ9MzwAK2qe/YN7fu+ufehrMPtNeABWgKGXuOfHPr7uDMKTQpMFhkb/1A2UQuOz50WMTDCsi5AjlWIPuy0LYktC4ILAsC8zzfNMszzXBbI1zjNGCY4rROcvRhjj7E1gfZLUFWywRLN8GMk6J5nNE0BgcXNAQZoxTtCLlhmKwZrlMngQN2jdJPUg4mWTFAkvtqZH3V0l6i5HAV1IUXHqrgt+PANhy/HcfvwAk6cIJDOP4hHP9QGXjoIK+jBPAWsdwIMmi2vVTzboppN8W0m2reQ7fuZdgKmM4DHE8Rt72E33lQ2I2DespFvXhJL16agEW1aoikGiKph2vVI3WaEXLDKBlFjQQ7tGNUmB2NY0jCEmNHCjgQdugCTN0ES4ewg6MPsg0hjiEIGEJAawgwhrnGMNcYBoxhrmmSa4onL2hPgeYpvgmBiABOZCxTQsuU0DINWaZjP5I8BVmnEccgkrQQ/012G2oTig6xY8Y9KTBPxksVaXQIg1lggcQXyaTAYJGl6f1EFrmsXHfrD0lDQNsi374kcKxA8DwLx7LQtiSwLoDmeZ5pFjDOcAzTbP0ku2WSpQszdaH65glm8wRTN8HUTTCbA/XN4/XNY3FSMJrG6I2wE8igJvrbCLlhJA4O2HVprlX5ScoBktxHkvdXy3qJksMEcXelqKtS1I0XdePFh/Giw3jR4QrocAV0GCfoLuN3lvI6SoC2IrankOnaX+8sYDgKGPaCemcB07Wf7S4EvEW8jjgpcKLeCkkvXtJfKfMR5D6ifBCGBRxckNTDtZqROtgNo+SYU8BBSQYHPR53NI8zmsfpzYF45oICxwQzRo1YzhJCSh6tYcAQRg++JGyMlVGRYCQcy2XgjjopME0KTJNCc1hgnhSaJxFwxNmBCkCSwgdbLLJIfsueEOW0p0gz8AI0hcHEa28SYx/x6RUYLLK3y7mUcL+wuK9NuUcWfNuCwL4kdKyIXEdFrqOQc0VoWxZYFnimOa5xhqOfZrVM1jeHGM0hetMEvXGC1jhORxxHwyi9aQxxY2bDPSoFHJSGEXLDcKo1w2TNMFk9RFYP1cWoUS3vJ8r7Yu4nyPqrpH1Vkr5KSR9e3FsB9eAE3Qf5XaXgoRJeRzHQVgh4YRdx24t4HSXgoVJB10HoME7UWy7pq5D04aX9lTJfldxHkA8QFamwgOOLWs1Ighqa0TpNZnBQtaMZkIFKVeLZChoZzJYgsyXI1CNDLfHRFtRyLIUxBJFIxBAEDEGuIcQ1hLitIV4r6veNjUh2AFtonhTGwWGNRxCpoUS8QpHyWr347ukBxRrZB4hEE0HQiHrnDQaLrI3uZ5zivmBxv9y5X1hAziPwvG/IeQSyrwisizzTPNA6w2qZYjSHaY0TNO0EtWGc0jBG0YxS4FEDlOnaUXoj2mP09J7TNE5vGs9EjXSPICWPRP7iJ6n9JJW/RuWvVg0SVYNE5SBRMUiUDxBkvkpJP17cVw714qCeMkF3qaCrlN9Zwu8sEXSVCrpKBd2l0OEyUQ9O3Fsh6cdLfXiZr1Luq5IPEOSDMCmIqqEYLIbRrk04zo4ENVKijAy5CeJAWqABh2bBWHE0yNSHmPogQpD4sIsuwNQFWLBbAuyWAFsf4OgDHH0A0E8AhgnAMME1BLnwL5UbgmBriG8Mo8ER40Wml/TGXr0pTIom4tnHpCATLNbOPlJfpYfBIvPm7J0zl1LlA6yM5pzvYMKE6XFqnWdD1t8/rVmOXHiwKgYmTJg2SlifxIQJU07CYIEJE6achMECEyZMOQmDBSZMmHISBgtMmDDlJAwWmDBhykkYLDBhwpSTMFhgwoQpJ2GwwIQJU07CYIEJE6achMECEyZMOQmDBSZMmHISBgtMmDDlJAwWmDBhykkYLDBhwpSTMFhgwoQpJ2GwwIQJU07CYIEJE6achMECEyZMOQmDBSZMmHISBgtMmDDlJAwWmDBhykkYLDBhwpSTMFhgwoQpJ2GwwIQJU076vzOQrUrv3fJkAAAAAElFTkSuQmCC" alt="" />
struts2上传图片的更多相关文章
- struts2上传图片的全过程
struts2上传图片的过程 1.写一个上传的jsp页面upload_image.jsp,内容如下:<body><center> <font color=" ...
- struts2上传图片超过大小给出错误提示
struts2上传图片超过大小给出错误提示 今天碰到上传图片太大,上传不上去返回input视图的界面,回显的错误信息却是乱码,整了好久才整出来,在这里做个记录,方便自己以后查阅,也希望能 ...
- struts2——上传图片格式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 关于struts2上传图片临时文件
- Struts2上传图片时报404错误
可能是struts配置文件中定义的拦截器导致的,后缀拦截导致,将该拦截器去掉,在action类里判断后缀 public String upload()throws Exception{ ActionC ...
- 一个简单的struts2上传图片的例子
https://www.cnblogs.com/yeqrblog/p/4398914.html 在我的大创项目中有对应的应用
- struts2多图片上传实例【转】
原文地址:http://blog.csdn.net/java_cxrs/article/details/6004144 描述: 通过struts2实现多图片上传. 我使用的版本是2.2.1,使用的包有 ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
- android 上传图片到服务器Tomcat(Struts2)
在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...
随机推荐
- CentOS5.4下安装codeblocks 12.11
centos6.3下安装codeblock简单多了,这些开源的软件也都在不断进步.原来装过codeblocks10.05,忘了,这次安装又花了我半天时间,最后总算搞定. 先是安装了wxGTK-2.8. ...
- GoWithTheFlow
GoWithTheFlow http://notes.jetienne.com/2011/07/17/gowiththeflow.js-async-flow-control-with-a-zen-to ...
- 使用@class和#import的细节问题
在.h头文件中导入其它头文件可以使用#import语句,从而在该头文件下使用另一个文件中的类和成员,但是我在使用#import语句时却遇到了以下问题: 首先写一个ViewController类: #i ...
- vs2013 linq to mysql
安装文件 1.下载安装文件 2.创建项目 3.创建mysql数据连接 4.新建ADO.NET数据模型 项目实现代码 using (WorkerContainer db = new WorkerCont ...
- 84. 从视图索引说Notes数据库(下)
作用和代价上文介绍了关系型数据库里的索引.Notes数据库里的索引隐藏在视图概念里(本文的讨论仅仅针对Notes的视图索引,不包括全文索引.).开发者创建的视图仅仅是存放在数据库里的一条设计文档.数据 ...
- 介绍一个python的新的web framework——karloop框架
karloop是一款轻型的web framework,和tornado.webpy类似.mvc分层设计,眼下已经公布早期版本号了,使用方便, 下载地址例如以下:https://github.com/k ...
- Django的TemplateResponse
def my_render_callback(response): return response from django.template.response import TemplateRespo ...
- python下yield(生成器)
python下的协程: #encoding=utf-8 """ 协程----微小的进程 yield生成器-----生成一个可迭代对象比如list, tuple,dir 1 ...
- CSS样式中ClearBoth的理解
在CSS中我们会经常要用到“清除浮动”Clear,比较典型的就是clear:both; CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边.这个属性是用来控制float属性在文档流的物理位 ...
- 经典排序算法及python实现
今天我们来谈谈几种经典排序算法,然后用python来实现,最后通过数据来比较几个算法时间 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据 ...