关于Flex上传通过URLVariables传参

最近在写Flex的上传 然后就遇到了问题

废话不多说

我是通过Flex写上传
我用FlieReference上传 URLRequest作为通信

查过URLRequest 的api,通常情况下
通过它的data属性来进行传值  可以使用ByteArray类型 URLVariables 再或者直接字符串

API中写道
ByteArray类型不支持POST 以及 FileReference.upload() , FileReference.download()

我在网上找过例子使用URLVariables,代码如下
   
   var request:URLRequest = new URLRequest(url);
   var urlVar:URLVariables = new URLVariables();
    urlVar.param = valStr;
    request.data = urlVar;
    request.method = URLRequestMethod.POST;

其中param作为属性名或者说是一个key 而valStr作为value

而后台使用  (String)request.getParameter("param");来接受
但挑了很长时间,不管用 后来也不知道是为什么

看了看API 标明如下
如果该对象是 URLVariables 对象,并且该方法是 POST,则使用 x-www-form-urlencoded 格式对变量进行编码,并且生成的字符串会用作 POST 数据。一种例外情况是对 FileReference.upload() 的调用,在该调用中变量将作为 multipart/form-data 发布中的单独字段进行发送。


DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try {
	List fileItems = upload.parseRequest(request);
	Iterator iter = fileItems.iterator();
	while (iter.hasNext()) {
		FileItem item = (FileItem) iter.next();
		if(item.getFieldName().equals("param")) {
				item.getString();
				........

正常的循环会循环出很多参数,所以需要判断

这样就可以获取到参数值了

你可能感兴趣的:(Flex,actionscript)