struts2上传图片到服务器
① struts2+Hibernate上传图片,如何实现图片可以放在服务器上;数据库保存图片路径。
楼主struts2上传代码会写吗?
struts2本身提供了上传拦截器,用struts2实现上传功能,并获得保存地址
<!-- 配置fileUpload的拦截器 -->
<interceptor-ref name="fileUpload">
获得文件存储地址(上传时指定)+文件名
调用保存方法(Hibernate),将文件路径存入数据库
在一个事务中完成即可!
如:有哪块有难点,及时追问。good luck!
② struts2多图片上传出现的问题,有的图片不能上传
建议页面使用jquery uploadify上传插件 那可以用UUID来命名
③ struts2实现图片的上传和下载
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.*;
import com.zdvictory.taurus.common.util.*;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
/** *
*/
public class UploadFileHandler {
private static int BUFFER_SIZE = 8192;
/**
* 上传附件操作 传递参数:系统参数配置设置的参数名称
*/
@SuppressWarnings("unchecked")
public static List<Attachment> upload(String sysParaName) throws Exception {
// 文件保存路径
String path = SysParaFinder.getSysParaValue(sysParaName);
List<Attachment> list = new ArrayList<Attachment>();
MultiPartRequestWrapper request = (MultiPartRequestWrapper) ServletActionContext
.getRequest();
Enumeration enu = request.getFileParameterNames();
while (enu.hasMoreElements()) { // 对每一个文件域进行遍历
String controlName = (String) enu.nextElement();
String[] fileNames = request.getFileNames(controlName);
File[] uploadFiles = request.getFiles(controlName);
for (int i = 0; i < uploadFiles.length; i++) {
File uploadFile = uploadFiles[i];
if (!uploadFile.exists())
continue;
// 如果文件夹不存在,创建文件夹,将文件保存到目录
File dir = new File(request.getRealPath("/") + path);
if (!dir.exists())
dir.mkdirs();
String ext = fileNames[i].substring(fileNames[i].indexOf("."),
fileNames[i].length());// 获取文件扩展名
String filename = UUID.randomUUID().toString() + ext;
File file = new File(request.getRealPath("/") + path + filename);
byte[] data = new byte[BUFFER_SIZE];
int byteRead = -1;
FileInputStream in = new FileInputStream(uploadFile);
FileOutputStream out = new FileOutputStream(file);
while ((byteRead = in.read(data)) != -1) {
out.write(data, 0, byteRead);
out.flush();
}
out.close();
in.close();
// 设置附件对象属性
Attachment attach = new Attachment();
attach.setFilename(fileNames[i]);
attach.setContentType(ext);
attach.setFilepathname(path + filename);
attach.setFilesize(uploadFile.length());
list.add(attach);
}
}
return list;
}
}
文件下载
public String download() throws Exception {
redheadTemplate = redheadTemplateManager.findById(Long
.valueOf(getId()[0]));
String name = redheadTemplate.getName()
+ redheadTemplate.getFilepathname().substring(
redheadTemplate.getFilepathname().lastIndexOf("."),
redheadTemplate.getFilepathname().length());
this.setFilename(new String(name.getBytes(), "ISO8859-1"));
this.setFilepathname(redheadTemplate.getFilepathname());
return "download";
}
文件下载配置文件
<result name="download" type="stream">
<!-- 下载文件类型 -->
<param name="contentType">
application/octet-stream
</param>
<!-- 默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文
件保存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名,
这里使用的是动态文件名,${filename}, 它将通过 Action 的 getFilename() 获得文件名 -->
<param name="contentDisposition">
attachment;filename="${filename}"
</param>
<!-- 下载的InputStream流,Struts2自动对应Action中的getDownloadFile方法,该方法必须返回InputStream类型 -->
<param name="inputName">downloadFile</param>
<!-- 输出时缓冲区的大小 -->
<param name="bufferSize">8192</param>
</result>
④ 我用struts2做文件上传,传到服务器的始终是tmp临时文件,我想要真正的文件,请怎么解决
struts只能帮你上传成文件流,你的action有个file吧,要想生成真正地文件,还得把File装换成FileOutputStream,然后输出到你真正的文件
⑤ Struts2上传文件到服务器下,怎么服务器重启之后文件就没了
我的也遇到过这样的情况,我的文件是放在服务器上,原因是本地的项目是没有存放该文件的,用myeclipse重新部署后,当然就没有了。
⑥ struts2上传图片怎么保存到数据库中
1、在实际开发中,图片一般是上传到图片服务器上,而数据库保存路径。struts2使用upload拦截器可以直接取到图片路径,处理后保存到数据库就行了。
2、对于一些需要保存到数据库的图片,可以使用大文本字段(clob或blob)。方法一般都是使用字节流将图片写入数据库。
⑦ 如何应用struts2上传图片保存到指定路径,并使路径存入数据库,该如何使用
struts2
⑧ struts2上传图片到linux服务器,成功上传文件,无法返回路径,报错: net::ERR_CONTENT_LENGTH_MISMATCH
因为windows和linux系统的文件路径分割符是不一样的。一个是“/”一个是“\”,所以换了环境当热会错。java中有一个方法叫做File.separator可以得到是运行环境下的分隔符,你需要在代码中做出修改。将文件路径拆开后然后使用 File.separator拼接。
⑨ struts2 spring hibernate实现图片上传,数据库保存路径
struts2有专门的拦截器进行上传工作,
1.下载struts2上传包commons-fileupload-1.2.jar
2.在action中接收并处理文件
3.在struts.xml中对应的action中进行配置上传拦截器
4.在server层中写业务处理操作
5.层写数据库插入语句
有什么不清楚的可以网络Hi我!~good luck!
具体代码,看我下面给你的参考地址!~
⑩ 服务器用Struts2框架如何接收AFinal上传的图片
java后台和你平常用from
表单上传的写法是一样的,什么都不用修改.剩下的都是安卓端的事