这个问题有点烦,问题解决了,但道理没有弄明白转载一个最有帮助的文章吧http://guofengcn.iteye.com/blog/655370
用struts2+ext开发上传模块,上传文件成功,但总是在浏览器中有提示“下载”……
而且发现前台的success和failure都没有执行到,打印json串一切正常……
这就奇怪了~~~上网找原因……发现好多人遇到这种问题,按网上的说法一步一步的试,首先是在struts配置文件中加入:
Xml代码
1.<param name="contentType">text/html</param>
<param name="contentType">text/html</param> 还是没解决掉……
换个方式,在action中直接写:
Java代码
1.HttpServletResponse response = ServletActionContext.getResponse();
2.response.setContentType("text/html;charset=UTF-8");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
试了下,还是不行……
还有说把struts配置文件中的:<result type="json">中的json改为XXX的……没有去尝试!
说正题,解决方式~
经过无数次的尝试后发现,其实只要将Action中的返回值从SUCCESS改为NONE,并写……
Java代码
1.public String execute() throws IOException{
2. *******略******最后加上以下部分,struts配置文件正常,也不用配置text/html
3.,完全没有下载提示了……(不加入这个可能后续会有问题,暂时没涉及呢,涉及了再说……)
4. HttpServletResponse response = ServletActionContext.getResponse();
5. String msg = "{success:true}";
6. response.getWriter().print(msg);
7. return NONE;
8.}
public String execute() throws IOException{
*******略******最后加上以下部分,struts配置文件正常,也不用配置text/html
,完全没有下载提示了……(不加入这个可能后续会有问题,暂时没涉及呢,涉及了再说……)
HttpServletResponse response = ServletActionContext.getResponse();
String msg = "{success:true}";
response.getWriter().print(msg);
return NONE;
} 到现在为止,下载问题应该不会再出现了……
谁能有更好的解决方式麻烦告诉我一下……
以下是二楼的回复,也很有帮助
我试了你的第一个方法还解决了:firfox不再弹出下载对话框,序列化的action照样能接受,Ext form提交后的回调函数正常执行,谢了,呵呵
不知道你为什么没成功,我把重要代码,提出来,你自己对照看看,说不定能有所收获:
1.save action方法:
Java代码
1.public String save(){
2. String oldImageName = request.getParameter("oldImageName"); //是否上传过,如果存在则删除
3. if (!"noImage".equalsIgnoreCase(oldImageName)) {
4. File oldFile = new File(ServletActionContext
5. .getServletContext().getRealPath("/")
6. + "UploadImages" + File.separator+oldImageName);
7. oldFile.delete();
8. }
9. System.out.println(oldImageName); //为用户新上传的图片新取一个名字
10. try {
11. user.setImage(writeFile("userPhoto"));
12. userService.addUser(user);
13. } catch (Exception e) {
14. e.printStackTrace();
15. message = e.getMessage();
16. success = false;
17. return NONE;
18. }
19. return NONE;
20. }
public String save(){
String oldImageName = request.getParameter("oldImageName"); //是否上传过,如果存在则删除
if (!"noImage".equalsIgnoreCase(oldImageName)) {
File oldFile = new File(ServletActionContext
.getServletContext().getRealPath("/")
+ "UploadImages" + File.separator+oldImageName);
oldFile.delete();
}
System.out.println(oldImageName); //为用户新上传的图片新取一个名字
try {
user.setImage(writeFile("userPhoto"));
userService.addUser(user);
} catch (Exception e) {
e.printStackTrace();
message = e.getMessage();
success = false;
return NONE;
}
return NONE;
}
2.action配置:
Java代码
1.<result type="json" name="none">
2. <param name="contentType">text/html;charset=utf-8</param>
3. <param name="excludeProperties">
4. user.myQuestionses,user.messages,user.myNotes,user.taskPapers,
5. user.tasks,user.testPapers,user.articles
6. </param>
7. </result>
<result type="json" name="none">
<param name="contentType">text/html;charset=utf-8</param>
<param name="excludeProperties">
user.myQuestionses,user.messages,user.myNotes,user.taskPapers,
user.tasks,user.testPapers,user.articles
</param>
</result>
3.Ext form提交
Java代码
1.register:function(btn){
2. this.form.getForm().submit({
3. waitMsg: '正在加载,请稍等……',
4. waitTitle: '提示',
5. url:'json2/FileUpload_save_Json',
6. method: 'POST',
7. scope:this,
8. success: function(form,action){
9. this.setUser(action.result.user.image);
10. },
11. failure: function(form, action) {
12. Ext.Msg.alert('提示', '系统出错,可能您的填写有错,请稍后再尝试上传!');
13. }
14. });
15. },
register:function(btn){
this.form.getForm().submit({
waitMsg: '正在加载,请稍等……',
waitTitle: '提示',
url:'json2/FileUpload_save_Json',
method: 'POST',
scope:this,
success: function(form,action){
this.setUser(action.result.user.image);
},
failure: function(form, action) {
Ext.Msg.alert('提示', '系统出错,可能您的填写有错,请稍后再尝试上传!');
}
});
},
你在return的时候都是返回的NONE,所以当然没有问题,我是想正常返回success,你试试把return设置成success,看会不会继续出下载的情况
1 楼 wkq_361138880 2010-05-21 引用
我试了你的第一个方法还解决了:firfox不再弹出下载对话框,序列化的action照样能接受,Ext form提交后的回调函数正常执行,谢了,呵呵
不知道你为什么没成功,我把重要代码,提出来,你自己对照看看,说不定能有所收获:
1.save action方法:
Java代码
1.public String save(){
2. String oldImageName = request.getParameter("oldImageName"); //是否上传过,如果存在则删除
3. if (!"noImage".equalsIgnoreCase(oldImageName)) {
4. File oldFile = new File(ServletActionContext
5. .getServletContext().getRealPath("/")
6. + "UploadImages" + File.separator+oldImageName);
7. oldFile.delete();
8. }
9. System.out.println(oldImageName); //为用户新上传的图片新取一个名字
10. try {
11. user.setImage(writeFile("userPhoto"));
12. userService.addUser(user);
13. } catch (Exception e) {
14. e.printStackTrace();
15. message = e.getMessage();
16. success = false;
17. return NONE;
18. }
19. return NONE;
20. }
public String save(){
String oldImageName = request.getParameter("oldImageName"); //是否上传过,如果存在则删除
if (!"noImage".equalsIgnoreCase(oldImageName)) {
File oldFile = new File(ServletActionContext
.getServletContext().getRealPath("/")
+ "UploadImages" + File.separator+oldImageName);
oldFile.delete();
}
System.out.println(oldImageName); //为用户新上传的图片新取一个名字
try {
user.setImage(writeFile("userPhoto"));
userService.addUser(user);
} catch (Exception e) {
e.printStackTrace();
message = e.getMessage();
success = false;
return NONE;
}
return NONE;
}
2.action配置:
Java代码
1.<result type="json" name="none">
2. <param name="contentType">text/html;charset=utf-8</param>
3. <param name="excludeProperties">
4. user.myQuestionses,user.messages,user.myNotes,user.taskPapers,
5. user.tasks,user.testPapers,user.articles
6. </param>
7. </result>
<result type="json" name="none">
<param name="contentType">text/html;charset=utf-8</param>
<param name="excludeProperties">
user.myQuestionses,user.messages,user.myNotes,user.taskPapers,
user.tasks,user.testPapers,user.articles
</param>
</result>
3.Ext form提交
Java代码
1.register:function(btn){
2. this.form.getForm().submit({
3. waitMsg: '正在加载,请稍等……',
4. waitTitle: '提示',
5. url:'json2/FileUpload_save_Json',
6. method: 'POST',
7. scope:this,
8. success: function(form,action){
9. this.setUser(action.result.user.image);
10. },
11. failure: function(form, action) {
12. Ext.Msg.alert('提示', '系统出错,可能您的填写有错,请稍后再尝试上传!');
13. }
14. });
15. },
自己的实验<param name="contentType">text/html</param> 是好用的
分享到:
相关推荐
此外,文件中还提到,如果JSON数据中存在奇数个反斜杠而后台没有进行处理,移动端可以先过滤掉这些特殊字符。这个提示意味着,在某些情况下,我们可以选择简化处理,直接移除所有反斜杠,但这种做法可能会导致原本...
3. 返回结果:服务器在成功保存图片后,需要返回一个JSON格式的响应,包含图片的URL或其他访问路径,以便UEditor在前端展示。 三、前端与后端交互 1. formData对象:在JavaScript中,使用FormData对象可以方便地...
2. **判断是否有数据需要提交**:如果`json`数组为空,则弹出提示框告知用户没有数据需要保存,并退出函数。 3. **发送Ajax请求**: - 使用`Ext.Ajax.request`发起POST请求。 - 设置请求URL为`./member_manage.jsp...
这个源码示例展示了如何在Android客户端实现一个登录功能,通过向服务器发送JSON请求并解析返回的JSON数据来验证用户的身份。下面将详细讲解其中涉及的关键知识点。 1. JSON基础:JSON是一种轻量级的数据交换格式,...
8. **用户体验**:在保存过程中,显示“正在保存”提示,保存成功后显示“已保存”,或提供撤销/恢复功能,提升用户体验。 9. **安全性**:确保数据传输过程的安全性,可以使用HTTPS协议加密通信,防止数据被窃取。...
在服务器端,例如在Java环境中,可以创建一个处理这些请求的API接口,接收JSON数据并保存到数据库。 在"自动保存草稿"的实现中,还需要考虑以下几个关键点: 1. **错误处理**:确保在网络不稳定或其他异常情况下,...
你可以在预期结果区域填写期望的值或规则,工具将自动比对返回结果,若有不符,会给出提示,帮助定位问题。 此外,im only resting 1.4.0还支持保存和管理接口测试集。你可以将常用的接口组合成一个测试集,方便...
- 保存Workbook为Excel文件,可以设置为流式响应,直接返回给前端。 3. **Flex与Java通信**: - Flex客户端通过HTTP服务调用Java后台接口,传递DataGrid的数据。 - 使用AMF(Action Message Format)或者...
在Web开发中,Ajax的应用极大地提升了用户体验,因为它允许后台与服务器进行数据交换,而不会中断用户的界面操作。本示例主要关注的是如何利用Ajax实现一种自动保存功能,常见于博客、论坛等在线文本编辑场景,确保...
4. 客户端处理响应:Android应用解析服务器返回的JSON数据,根据响应内容显示相应的提示,如登录成功则跳转到主界面,否则显示错误信息。 在这个简单的Android登录+PHP后台的项目中,你可以学到如何在Android应用中...
服务器端可能有一个API接口,返回JSON或其他格式的数据,包含新版本号、更新日志和apk安装包的下载URL。 2. **获取apk下载路径**:如果服务器响应有新版本可用,应用将获取到apk安装包的下载URL。这个URL通常指向一...
5. 服务器响应:服务器接收到请求后,处理数据并返回一个确认消息或保存的ID。使用`onreadystatechange`事件监听服务器的响应,当`readyState`为4(表示请求已完成)且`status`为200(表示成功)时,说明保存成功。 ...
通过Ajax请求,后台Java程序处理数据库查询,返回JSON格式的数据,前端则使用这些数据填充Grid。 2. **表单操作**:EasyUI的Form组件可与后台进行数据交换,支持创建、编辑和删除操作。Java后端可能使用了Spring ...
最后,JAVA后台生成Excel文件后,可以选择返回文件流,前端接收到流后直接下载,或者将文件保存到服务器,提供一个URL供用户下载。为了提高用户体验,可以在导出过程中显示进度条或提示信息。 总结来说,实现...
3. **JSON数据格式**:服务器返回的数据通常以JSON格式传输,便于前端解析和处理。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 4. **数据过滤和...
2. **数据封装**:将需要保存的日志信息(如用户ID、操作时间、操作内容等)封装成JSON格式,便于传输。 3. **Ajax调用**:使用XMLHttpRequest对象发送POST请求到服务器,将日志数据作为请求体发送。 4. **服务器...
此外,如果下载的文件不是文件而是JSON格式的数据,我们需要进行判断并转换。这在请求时可以通过设置`responseType`为`'blob'`来确保接收到的是文件流,然后根据返回的数据判断是否需要转换。 在项目实践中,使用...
3. JSON解析库:如Gson或Jackson,用于解析API返回的JSON数据。 4. Android权限管理:了解如何在AndroidManifest.xml中声明权限,以及在运行时请求权限(对于Android 6.0及以上版本)。 5. Android编程模型:理解...
`JsonResult`是返回JSON数据的结果类型。 3. **POST请求**: 在jQuery中,POST请求可以使用`$.ajax()`或更简单的`$.post()`函数。例如: ```javascript $.post('your_server_url', { key: 'value' }, function...
11. 接口测试:POST or GET 方式检测系统接口,参数加密,json返回结果,计算服务器响应时间 12. 发送邮件:单发,群发邮件 13. 置二维码:生成二维码图表保存到服务器 or 解析读取二维码内信息 14. 图表报表:...