NodeJS加密/解密文件

时间:2019-11-29 13:06:57

标签: javascript node.js reactjs

我目前正在开发一个应该成为某种保管箱克隆的应用程序。我的想法是可以上传和下载文件,但是当文件存储在服务器上时,应该对其进行加密。

我已经开发了一个nodejs后端。后端使用express与前端进行通信,前端是带有axios的React应用程序。

升级和下载正常。我使用js-file-download和一个简单的输入标签来上传文件。

我的问题现在是加密/解密部分。我发现的所有库和示例仅适用于字符串或对象,不适用于文件。不知何故,我不明白如何像在代码中一样获取整个文件,提取信息,对其进行加密并将其再次存储在文件中。有人可以帮我一点吗?

下面您可以看到用于从前端升级和下载代码的代码片段。我认为有最好的加密和解密地方。

上传文件的代码

const uploadHandler = async (event) => {
    event.preventDefault()
    if(files.length === 0){
      props.handleError('No files!', 5000)
    }else if(checkMimeType()){
      console.log('start uploading')
      const data = new FormData()
      for(var x = 0; x<files.length; x++) {
        data.append('file', files[x])
      }
      const response = await fileService.sendFiles(data)
      if(response.status === 200){
        props.handleNotification(response.data, 5000)
        props.getFiles()
      }
      else{
        props.handleError(response.data, 5000)
      }
      setFiles([])
    }
    window.location.reload()
  }

  const onChangeHandler = (event) => {
    event.preventDefault()
    setFiles(event.target.files)
  }

  return (
    <div className='container'>
      <div className='row'>
        <div className='col-md-15'>
          <div className='form-group files' >
            <Form method='POST' encType='multipart/form-data' onSubmit={uploadHandler} >
              <input type='file' autoComplete='off' name='files' multiple onChange=    {onChangeHandler}/>
              <Button className='button' type="submit">Upload</Button>
            </Form>
          </div>
        </div>
      </div>
    </div>
  )

下载文件的代码:

  const fileDownload = require('js-file-download')

  const handleSingleDownload = async (file) => {
    const response = await fileService.getFile(file.id)
    console.log(response.data)
    fileDownload(response.data, file.name)
    props.handleNotification('Download started...', 2500)

  }

0 个答案:

没有答案