swfupload 与struts2 上传完成后在前台接受返回值的问题。

ffhelly 发布于 2012/02/29 16:57
阅读 7K+
收藏 1

小弟刚看这个SWF上传。。

现在是传到后台后  上传是可以。。

但是 想在这个同时给前台发个当前上传的完全路径给前台那里 

让其中一文本框显示其路径。。

用了request set att后 还是发送不到。。

前台无法接收- - 

求各位达人指点。。

 

uploadSuccess 这个方法 是在API上查到的。。但是不知道在什么时候用他- - 。。

网上也没有太多关于 SWFUPLOAD 和 java对于这个返回值问题的具体说法。。

 

求教!!~

加载中
0
ffhelly
ffhelly

引用来自“viperasi”的答案

server_data的意思是服务器返回的数据,如果你指定页面,那服务器返回的应该就是这个jsp的数据了,这里最好用type=json的格式

好吧。。

我试试用JSON传传。。

0
xu81.com
xu81.com
如果是将当前已上传的文件web路径返回给用户前台,建议的做法是在swfupload的uploadSuccess里直接获取页面对象来设置值,还有一点swfupload上传的session是新session跟页面session是不同的。
0
ffhelly
ffhelly

引用来自“viperasi”的答案

如果是将当前已上传的文件web路径返回给用户前台,建议的做法是在swfupload的uploadSuccess里直接获取页面对象来设置值,还有一点swfupload上传的session是新session跟页面session是不同的。

我刚看了红薯的一篇对于SWFUPLOAD的文章介绍。。

uploadSuccess 是写到handler 里的。。

还是比较迷茫,我尝试在SCRIPT里写了个单独的  弹出了,但是弹的是整个页面的内容。。

后台用response write 了个 "aaaa" 的值。。 不过还不是我要的效果。。

2  , 就是说我需要把sessionId 在param 中 发给后台了吧。。

0
xu81.com
xu81.com
如果是java发sessionId是没啥用处的, 那个handler是例子里有一个handler.js文件,如果你的应用比较简单,直接拿过来用没问题,还自带进度展示(progress.js一起拿过来用)。 upload_success_handler : uploadSuccess, 这里是定义 然后写一个function uploadSuccess(fileObj, server_data){} 或者直接upload_success_handler:function(fileObj,server_data){} fileObj是文件对象,server_data是服务器返回的值
0
ffhelly
ffhelly

引用来自“viperasi”的答案

如果是java发sessionId是没啥用处的, 那个handler是例子里有一个handler.js文件,如果你的应用比较简单,直接拿过来用没问题,还自带进度展示(progress.js一起拿过来用)。 upload_success_handler : uploadSuccess, 这里是定义 然后写一个function uploadSuccess(fileObj, server_data){} 或者直接upload_success_handler:function(fileObj,server_data){} fileObj是文件对象,server_data是服务器返回的值

好的,我试试。。

 

不过server_data 这个在java里 要用什么方式传??request.setAttbute 么?

 

还是用什么其他的方式??

0
xu81.com
xu81.com
response.write
0
ffhelly
ffhelly

引用来自“viperasi”的答案

response.write

我刚刚用response.getWriter().write("这是结果");

 

然后在

upload_success_handler : function uploadSuccess(fileObj, server_data) {
       try {
        alert("aa"+server_data);
        //document.write( server_data);
       } catch (ex) { this.debug(ex); }
      }

这里测试弹出。。

现在弹出的还是整个JS- - 。。

0
xu81.com
xu81.com
还是整个JS?你action代码贴出来看看
0
ffhelly
ffhelly

引用来自“viperasi”的答案

还是整个JS?你action代码贴出来看看
public String execute() throws Exception {
		InputStream is = new FileInputStream(file);
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response=ServletActionContext.getResponse();
		String root = request.getRealPath("/upload");
		System.out.println("传来:"+request.getAttribute("name"));
		File deskFile = new File(root, this.getFileFileName());
		OutputStream os = new FileOutputStream(deskFile);
		byte[] bytefer = new byte[1024];
		int length = 0;
		while ((length = is.read(bytefer)) != -1) {
			os.write(bytefer, 0, length);
		}
		os.close();
		is.close();
		response.getWriter().write("ACTION的回来的值");
		return "success";
	}

这是提交的Action

 

 

window.onload = function() {
			upload1 = new SWFUpload({

				//提交路径
				upload_url: "upload.action",
				//向后台传递额外的参数
				post_params: {"name" : "kaobian"},
				//上传文件的名称
				file_post_name: "file",
				
				// 下面自己按照字面意思理解
				file_size_limit : "102400",	// 100MB
				file_types : "*.*",
				file_types_description : "All Files",
				file_upload_limit : "10",
				file_queue_limit : "0",

				// 事件处理
				file_dialog_start_handler : fileDialogStart,
				file_queued_handler : fileQueued,
				file_queue_error_handler : fileQueueError,
				file_dialog_complete_handler : fileDialogComplete,
				upload_start_handler : uploadStart,
				upload_progress_handler : uploadProgress,
				upload_error_handler : uploadError,
				upload_success_handler : function uploadSuccess(fileObj, server_data) { 
							try { 
								
								alert("ACTION返回:"+server_data);
								//document.write( server_data); 
							} catch (ex) { this.debug(ex); } 
						},
				upload_complete_handler : uploadComplete,

				// 按钮的处理
				button_image_url : "images/XPButtonUploadText_61x22.png",
				button_placeholder_id : "spanButtonPlaceholder1",
				button_width: 61,
				button_height: 22,
				
				// Flash Settings
				flash_url : "js/swfupload.swf",
				

				custom_settings : {
					progressTarget : "fsUploadProgress1",
					cancelButtonId : "btnCancel1"
				},
				
				// Debug Settings
				debug: false
			});
	     }

这是前台JS段。。

 

然后弹出整个上面的JS后  页面就乱码了。。我用的UTF-8。

0
xu81.com
xu81.com
你result的name=success里指定了页面?
返回顶部
顶部