我做了一个基于Flex + PHP的应用程序,其中有一个function可以将图片上传到服务器。 如果在Windows上运行,该应用程序会上传照片。 但在Ubuntu上,文件根本就没有上传。 它可以是权限相关的问题?
这是上传文件时保留的日志:
Uploading 5408_1243356204478_1246540615_30751024_3730562_n.jpg... File opened File upload in progress (349 of 31340) File upload in progress (349 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) File upload in progress (31340 of 31340) HTTP error occured - HTTP IO error occured -
另外,我尝试了OpenSuSE机器上的这个应用程序,上传在那里工作得很好。
我的应用程序的path:/ var / www / bin-release / var / www / bin-release / *的权限
所有者,group = baltusaj,www-data文件,目录= 777,777
我还在/ etc / group的www-data组中添加了baltusaj
HTTP I / O错误仍然存在,在我的神经周围跳舞。 🙁
我会建议从客户端运行Wireshark捕获网络流量,因为该文件是上传的。 这应该能够有效地查看服务器在两次安装之间的实际操作。
在Mac Safari浏览器中,我遇到了类似于Flex + Java的问题。 我使用urlRequestVariable修正了它,并改变了来自services.Hope的响应,这可能对你有帮助。
解决方案 :* 1.创建一个urlRequest变量并设置文件上传URL。 *
例如,var request:URLRequest = new URLRequest(); request.url = HTTP://本地主机:8080 / projectContext /上传/“;
2.使用URLVariables设置请求数据 [现在REST接口和userObject是queryparam]
var sendVars:URLVariables=new URLVariables(); var user:Object = new Object; user.firstName ="XXX"; user.lastName="YYY"; sendVars.userObject = user; request.data=sendVars; var _refUploadFile:FileReference=new FileReference(); _refUploadFile=obj.file; _refUploadFile.addEventlistner(ProgressEvent.PROGRESS, onUploadProgress); _refUploadFile.addEventlistner(IOErrorEvent.IO_ERROR, onUploadIoError); _refUploadFile.addEventlistner(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError); _refUploadFile.upload(request, "file", true); _refUploadFile.addEventlistner(Event.COMPLETE, onUploadComplete);
从服务我试图返回一个响应对象和onUploadComplete方法从来没有被调用,认为文件上传成功。所以当你从服务的onUploadComplete方法返回一个字符串将被调用。
谢谢大家的帮助。 🙂
我换了下面这行
public var uploadFile:String = "upload.php";
同
public var uploadFile:String = "http://localhost/bin-release/upload.php";
这使得应用程序在Ubuntu上运行。 虽然只用了'upload.php',但它正在使用OpenSuSE。