我已经制作了一个基于Flex + PHP的应用程序,其中有一个功能可以将图片上传到服务器。如果在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上试过这个应用程序 机器和上传工作 很好。
我的应用程序的路径:/ var / www / bin-release / var / www / bin-release / *
的权限所有者,组= baltusaj,www-data files,directories = 777,777
我还将baltusaj添加到/ etc / group
中的www-data组HTTP I / O错误仍然存在,围绕着我的神经。 :(
答案 0 :(得分:1)
我建议从客户端运行Wireshark以捕获网络流量,因为文件已上传。这应该可以有效地查看服务器在两个安装之间实际执行的操作。
答案 1 :(得分:1)
我在Mac Safari浏览器中遇到了类似的Flex + Java问题。我使用urlRequestVariable修改了它,并改变了来自services.Hope的响应,这可能对你有帮助。
<强>解决方案强>:* 1。创建urlRequest变量并设置文件上载URL。 *
例如,var request:URLRequest = new URLRequest(); request.url = HTTP://本地主机:8080 / projectContext /上传/“;
2.使用URLVariables设置请求数据 [现在REST接口和userObject是查询参数]
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.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
_refUploadFile.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
_refUploadFile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);
_refUploadFile.upload(request, "file", true);
_refUploadFile.addEventListener(Event.COMPLETE, onUploadComplete);
从服务中我尝试返回一个响应对象并且从未调用onUploadComplete方法,认为该文件已成功上传。因此,当您从服务返回一个字符串时,将调用onUploadComplete方法。
答案 2 :(得分:0)
谢谢大家的帮助。 :)
我替换了以下行
public var uploadFile:String = "upload.php";
与
public var uploadFile:String = "http://localhost/bin-release/upload.php";
使应用程序在Ubuntu上运行。它正在开发OpenSuSE,只是'upload.php'。