AWS S3使用TemporaryFile下载和上载

时间:2018-04-12 13:19:04

标签: python python-3.x amazon-web-services amazon-s3

我需要下载Amazon S3 Bucket的所有内容(包括版本)并上传到其他Amazon S3 Bucket。不要告诉我使用aws,我就是不能使用。

我使用tempfile.TemporaryFile,它显然有效,打印显示文件对象里面有正确的内容,但上传的文件是空的(零字节)。

with tempfile.TemporaryFile() as data:
    sourceUser.download_fileobj('source-bucket',key,data)
    # next 2 lines was just to check the content of the file
    data.seek(0)
    print (data.read())
    destinationUser.upload_fileobj(data,'destination-bucket',key)

1 个答案:

答案 0 :(得分:0)

我有相同的要求,如何将NamedTemporaryFile传递到上载s3

不确定如何将NamedTemporaryFileName传递给output = f'{file_name} .gpg'并传递给load_file函数-> filename = f_source.name

import React from "react";
class Symbol extends React.Component {
constructor(props) {
super(props);
this.state = {
  userInput: "",
  symbol: [],
  isFiltered: false,
  isLoaded: false,
 };
}

typeSymbol = (e) => {
this.setState(
  {
    userInput: e.target.value.toUpperCase(),
  },
  () => {
    console.log(this.state.userInput);
  }
 );
};

getSymbol = (e) => {
e.preventDefault();
const filter = this.state.symbol.filter(
  (el) => el.displaySymbol === this.state.userInput
);
// console.log(filter);
this.setState(
  {
    symbol: filter,
    isFiltered: true,
  },
  () => {
    console.log(this.state.symbol);
   }
 );
};

componentDidMount() {
fetch(`https://finnhub.io/api/v1/stock/symbolexchange=US&token=${key}`)
  .then((res) => res.json())
  .then(
    (results) => {
      this.setState({
        isLoaded: true,
        symbol: results,
      });
      console.log(this.state.symbol);
      },
      (error) => {
      this.setState({
        isLoaded: true,
        error,
      });
     }
   );
  }

 render() {
 const { symbol, userInput } = this.state;
 //console.log(userInput);
 if (this.state.isFiltered) {
  return symbol.map((symbol, i) => {
    return (
      <span className="symbol" key={i}>
        {symbol.displaySymbol}
      </span>
    );
  });
} else {
  return (
    <div className="enterstock">
      <h1 className="title">Enter Stock Symbol</h1>
      <form className="inputfields" onSubmit={this.getSymbol}>
        <input
          type="text"
          className="symfields"
          name="symbolname"
          onChange={this.typeSymbol}
        ></input>
        <button type="submit" className="btn">
          Send
        </button>
      </form>
    </div>
  );
  }
 }
}
export default Symbol;