扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
// 这是我写的一个方法,里面只需要传两个运棚闹参数就OK了,在任何地方调用此方法都可以旁罩文件上传
在溪湖等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都做网站 网站设计制作定制网站制作,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸网站建设,溪湖网站建设费用合理。
/**
* 上传文和枯件
* @param file待上传的文件
* @param storePath待存储的路径(该路径还包括文件名)
*/
public void uploadFormFile(FormFile file,String storePath)throws Exception{
// 开始上传
InputStream is =null;
OutputStream os =null;
try {
is = file.getInputStream();
os = new FileOutputStream(storePath);
int bytes = 0;
byte[] buffer = new byte[8192];
while ((bytes = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytes);
}
os.close();
is.close();
} catch (Exception e) {
throw e;
}
finally{
if(os!=null){
try{
os.close();
os=null;
}catch(Exception e1){
;
}
}
if(is!=null){
try{
is.close();
is=null;
}catch(Exception e1){
;
}
}
}
}
Uploadify 是一个比较坑的东西,得用servlet, web.xml里配置 然后servlet接收
servlet
servlet-nameupload/servlet-name
servlet-classcom.action.upload/servlet-class
/servlet
servlet-mapping
servlet-nameupload/servlet-name
url-pattern/upload/FileUploadServlet/url-pattern
/servlet-mapping
servlet里代码
public void doGetAndPost(HttpServletRequest request,
HttpServletResponse response){
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e) {
logger.error("后台添加图片,request设置编码符失败! {}",e.getMessage());
}
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
List fileList = null;
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
ex.printStackTrace();
return;
}
String imageName = null;
IteratorFileItem it = fileList.iterator();
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
Random r = new Random();
int rannum = (int) (r.nextDouble() * (9999 - 1000 + 1)) + 1000;
imageName=getNowStrDate() + rannum;
FileBean fileBean = new FileBean();
fileBean.setFileName(item.getName());
fileBean.setFileExtension(item.getName().substring(item.getName().indexOf(".")+1));
FileBean flbn;
try {
//文件服务器处理上传图片
flbn = FastDFSUtil.upload(fileBean, item.getInputStream());
} catch (IOException e) {
logger.info("添加图绝姿片闹空,上液宏瞎传文件服务器失败!",e);
}
}
}
}
package cn.itcast.struts2.demo1;
import java.io.File;
import org.apache点抗 mons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 完成文件上传 (不是解析上传内容,因为上传内容 由fileUpload拦截器负责解析)
*
* @author seawind
*
*/
public class UploadAction extends ActionSupport {
// 接收上传内容
// input type="file" name="upload" /
private File upload; // 这里变量名 和 页面表单元素 name 属性一致
private String uploadContentType;
private String uploadFileName;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
if (upload == null) { // 通过xml配置 required校验器 完成校验
// 没有上传文件
return NONE;
}
// 将虚举上传文件 保正橡存到服务举誉旁器端
// 源文件 upload
// 目标文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload") + "/" + uploadFileName);
// 文件复制 使用commons-io包 提供 工具类
FileUtils.copyFile(upload, destFile);
return NONE;
}
}
多文件上传
package cn.itcast.struts2.demo1;
import java.io.File;
import org.apache点抗 mons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 支持多文件上传
*
* @author seawind
*
*/
public class MultiUploadAction extends ActionSupport {
// 接收多文件上传参数,提供数组接收就可以了
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
public void setUpload(File[] upload) {
this.upload = upload;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
for (int i = 0; i upload.length; i++) {
// 循环完成上传
File srcFile = upload[i];
String filename = uploadFileName[i];
// 定义目标文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload" + "/" + filename));
FileUtils.copyFile(srcFile, destFile);
}
return NONE;
}
}
看这个样子好像是东软的 neo框架.但是你引用的东西不够,应该还有webwork的配置文件.因为上传文件必须有拦截器才可以的.
另外这个neo框架把上传的java代码都封装起来了.这么看搜雹很难看的.
String fileName = getServletContext().getRealPath(
"/images/" + contentId);
这句是在服务答丛器上建立一个文件名,就是要上传的文件的文件名,但是这只是名字.
之后File类的renameTo方法。这个操作就相当于移动文件.但是跨盘的不行清漏樱,所以他只是新建一个 filename为名字的文件.
然后你要去PhotoService里面看addPhoto方法才行.估计里面就是文件流.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流