2

我正在尝试上传从服务器获取的文件。但是当获取的文件大于 1MB 时,S3 中只会保存一个 1KB 的小文件。当它小于 1MB 时,文件将被正确保存。

我已经搜索并尝试了不同的方法,但它们都不起作用。这是由用户单击按钮触发的类。

` 类 Fetch_by_button(webapp.RequestHandler):

def get(self):
    #1. fetch the file
    try: 
        result = urlfetch.fetch('http://someurl.com/music.mp3') # file with 2MB
        #result = urlfetch.fetch('http://anotherurl.com/document.pdf') #file with 900KB is working
    except DownloadError:
        print("URL fetch doesnt work properly")

    #2. search datastore UserData-model by userobject to get s3 credentials
    usr = users.get_current_user()
    query = UserData.gql("WHERE account =:1", usr)
    qr = query.get()

    #3. establish connection to s3
    conn = S3Connection(qr.s3_accesskey, qr.s3_secret_accesskey)

    #4. create bucket
    ak_lowercase = str.lower(str(qr.s3_accesskey))
    individual_bucket_name = ak_lowercase + '_' + usr.nickname()
    bucket = conn.create_bucket(individual_bucket_name)

    #5. generate key and assign to already created bucket
    k = Key(bucket)

    #6. name the key by some examplary filename
    k.key = 'justsomefilename'

    #7. save the correspondent value to the created key
    k.set_contents_from_string(result.content)`

我只是不知道为什么会发生这种情况。我的代码有一些东西,AppEngine 的一些限制,boto 的东西,......有什么建议吗?

提前致谢。

4

1 回答 1

2

对于 urlfetch,应用引擎上的最大请求大小为 1mb。我猜您的 S3Connection 类使用它来进行实际传输。

响应最大可达 32MB,这就是下载有效的原因。

于 2011-03-07T20:10:27.213 回答