Apache flex 如何使用PyAMF或PhpAMF在flex中上传文件?客户端,而服务器端只需要很少的帮助
嘿Apache flex 如何使用PyAMF或PhpAMF在flex中上传文件?客户端,而服务器端只需要很少的帮助,apache-flex,file-upload,bytearray,pyamf,Apache Flex,File Upload,Bytearray,Pyamf,嘿 我需要上传一组图像使用flex与机器人腿 我需要一个进度条工作时,图像上传 它可能同时上载一个或多个图像 我想知道是否上传Bytarray到服务器,然后保存图像是太沉重的服务器 在服务器端,我有一个由pyamf创建的方法,如下所示: 谢谢;) 在captionmash.com上工作时,我不得不解决一个类似的问题(将一张照片从Flex上传到Django),也许它可以帮助你。我使用PyAMF进行正常的消息传递,但FileReference类有一个内置的上载方法,所以我选择了简单的方法 基本上,
谢谢;) 在captionmash.com上工作时,我不得不解决一个类似的问题(将一张照片从Flex上传到Django),也许它可以帮助你。我使用PyAMF进行正常的消息传递,但FileReference类有一个内置的上载方法,所以我选择了简单的方法 基本上,这个系统允许你们从Flex上传一个文件到GoogleAppEngine,然后使用AppEngine的图像API创建缩略图,并将图像转换成JPEG,然后上传到S3 bucket。库用于AmazonS3连接,您可以在github上查看项目的全部代码 此代码仅用于单文件上载,但您应该能够通过创建FileReference对象数组并对所有对象调用upload方法来执行多文件上载 我在这里发布的代码是有点清理,如果你仍然有问题,你应该检查回购了 客户端(Flex): 服务器端(应用程序引擎上的Django): 网址: 观点:
def receive_file(request):
uploadService = UploadService()
file = request.FILES['file']
uploadService.receive_single_file(file)
return HttpResponse()
上传服务类
import uuid
from google.appengine.api import images
from boto.s3.connection import S3Connection
from boto.s3.key import Key
import mimetypes
import settings
def receive_single_file(self,file):
uuid_name = str(uuid.uuid4())
content = file.read()
image_jpeg = self.create_jpeg(content)
self.store_in_s3(uuid_name, image_jpeg)
thumbnail = self.create_thumbnail(content)
self.store_in_s3('tn_'+uuid_name, thumbnail)
#Convert image to JPEG (also reduce size)
def create_jpeg(self,content):
img = images.Image(content)
img_jpeg = images.resize(content,img.width,img.height,images.JPEG)
return img_jpeg
#Create thumbnail image using file
def create_thumbnail(self,content):
image = images.resize(content,THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT,images.JPEG)
return image
def store_in_s3(self,filename,content):
conn = S3Connection(settings.ACCESS_KEY, settings.PASS_KEY)
b = conn.get_bucket(BUCKET_NAME)
mime = mimetypes.guess_type(filename)[0]
k = Key(b)
k.key = filename
k.set_metadata("Content-Type", mime)
k.set_contents_from_string(content)
k.set_acl("public-read")
您必须使用AMF进行上传吗?您当然可以使用它进行上传,但RemoteObject和NetConnection都不会发送任何类型的进度事件,因此您最好使用不确定的进度条。
urlpatterns = patterns('',
...
(r'^upload/$', receive_file),
...
def receive_file(request):
uploadService = UploadService()
file = request.FILES['file']
uploadService.receive_single_file(file)
return HttpResponse()
import uuid
from google.appengine.api import images
from boto.s3.connection import S3Connection
from boto.s3.key import Key
import mimetypes
import settings
def receive_single_file(self,file):
uuid_name = str(uuid.uuid4())
content = file.read()
image_jpeg = self.create_jpeg(content)
self.store_in_s3(uuid_name, image_jpeg)
thumbnail = self.create_thumbnail(content)
self.store_in_s3('tn_'+uuid_name, thumbnail)
#Convert image to JPEG (also reduce size)
def create_jpeg(self,content):
img = images.Image(content)
img_jpeg = images.resize(content,img.width,img.height,images.JPEG)
return img_jpeg
#Create thumbnail image using file
def create_thumbnail(self,content):
image = images.resize(content,THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT,images.JPEG)
return image
def store_in_s3(self,filename,content):
conn = S3Connection(settings.ACCESS_KEY, settings.PASS_KEY)
b = conn.get_bucket(BUCKET_NAME)
mime = mimetypes.guess_type(filename)[0]
k = Key(b)
k.key = filename
k.set_metadata("Content-Type", mime)
k.set_contents_from_string(content)
k.set_acl("public-read")