2017-11-29 21 views
0

私は現在ReactJSウェブアプリを開発中です。私はフォルダに画像をアップロードし、ファイル名をデータベースに保存しようとしていますので、私はそれを扱うことができます。イメージファイルをフォルダに移動するにはどうすればよいですか?

これまでのことはすべて動作しますが、私の唯一の封鎖はフォルダへのファイル転送です。ここで

ImageUploadコンポーネント:\ドキュメント:

import * as React from 'react'; 

    export class ImageUpload extends React.Component<any, any> { 
    constructor(props : any) { 
     super(props); 
     this.state = { file: '', imagePreviewUrl: '' }; 
    } 

    _handleSubmit(e : any) { 
     e.preventDefault(); 

     // TODO: do something with -> this.state.file 
     alert(this.state.file.name); 
     this.state.file.copy("C:\\Documents"); 
    } 

    _handleImageChange(e : any) { 
     e.preventDefault(); 

     let reader = new FileReader(); 
     let file = e.target.files[0]; 

     reader.onloadend =() => { 
      this.setState({ 
       file: file, 
       imagePreviewUrl: reader.result 
      }); 
     } 

     reader.readAsDataURL(file) 
    } 

    render() { 
     let { imagePreviewUrl } = this.state; 
     let $imagePreview = null; 
     if (imagePreviewUrl) { 
      $imagePreview = (<img src={imagePreviewUrl} />); 
     } else { 
      $imagePreview = (<div className="previewText">Please select an Image for Preview</div>); 
     } 

     return (
      <div className="previewComponent"> 
       <form onSubmit={(e) => this._handleSubmit(e)}> 
        <input className="fileInput" 
         type="file" 
         onChange={(e) => this._handleImageChange(e)} /> 
        <button className="submitButton" 
         type="submit" 
         onClick={(e) => this._handleSubmit(e)}>Upload Image</button> 
       </form> 
       <div className="imgPreview"> 
        {$imagePreview} 
       </div> 
      </div> 
     ) 
    } 
} 

あなたは私がCにファイルをコピーまたは移動しようとして見ることができるように。私は、ファイルを適切にフォルダに移動するソリューションを見つけることができませんでした。

提案がありますか?

+0

私はあなたがファイルのアップロードを処理し、サーバー上で移動する必要があると思う –

+0

それで、反応で動くことはできませんか? – Giovanni

+0

私が知る限り、クライアント上のファイルを移動することはできません。私はバックエンドサーバーとしてASP.NETを使用していると仮定しています。あなたは、ファイルをアップロードし、ASP.NETを使用して移動することができます –

答えて

1

イメージをアップロードしてデータベースに保存する場合は、FormDataを受け入れるAPIが必要です(Form Data Usageを参照)。サーバー上でそのファイルを保存先に保存する必要があります。そのためにはExpressJSとミドルウェアを使用してmultipart uploadを処理することができます。そこからNodeJS関数を使用してファイルをローカルの宛先に保存することができます。

反応のみを使用することはできません。

+0

私のstate.fileでリクエストの例がありますか? – Giovanni

+0

submitイベントで、コンポーネント内の 'FormData'インスタンスに' e.target.files [0]; 'を追加する必要があります。答えからフォームデータ使用状況のリンクを参照してください。 –