2016-11-22 2 views
0

У меня есть файл по этому адресу:Скачать файл с s3, используя Boto через прокси-сервер

http://s3.amazonaws.com/bucket-name/sdile_pr_2_1_1/pr/0/2/1/1/dile_0_2_1_1.nc

в s3 ведро, что я хочу сделать доступным через приложение опоки.

сделать так, я создал функцию, которая выглядит следующим образом:

@app.route('/select/dile') 
def select_dile_by_uri(): 

    uri=request.args.get('uri') 

    if uri is not None: 
     if uri.startswith("http://s3.amazonaws.com/"): 
      path  = uri.replace("http://s3.amazonaws.com/","") 
      bname, kstr = path.split("/",1) # split the bname from the key string 
      conn  = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 

      try:  
       bucket = conn.get_bucket(bname) 
      except: 
       print "BUCKET NOT FOUND" 
       return str("ERROR: bucket "+bname+" not found") 
      else: 
       print "BUCKET CONNECTED" 
       try: 
        key = bucket.get_key(kstr) 
        print "KEY: ", key 
       except: 
        print "KEY NOT FOUND" 
        return str("ERROR: key "+kstr+"not found") 
       else: 
        try: 
         key.open_read()       # opens the file 
         headers = dict(key.resp.getheaders()) # request the headers 
         return Response(key, headers=headers) # return a response         
        except S3ResponseError as e: 
         return Response(e.body, status=e.status, headers=key.resp.getheaders()) 



    abort(400) 

загрузка работы, но имя загруженного файла, как представляется, только «DILE» вместо dile_0_2_1_1.nc.

Почему? есть ли что-то, что мне нужно было установить?

ответ

0

то, что мне нужно сделать, это добавить поле в заголовках, а именно:

headers["Content-Disposition"] = "inline; filename=myfilename" 

где -myfilename- это имя, которое вы хотите, чтобы файл.

Смежные вопросы