Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 水晶:多部件碎片罐';I don’我没有读到我的信_File_Io_Crystal Lang - Fatal编程技术网

File 水晶:多部件碎片罐';I don’我没有读到我的信

File 水晶:多部件碎片罐';I don’我没有读到我的信,file,io,crystal-lang,File,Io,Crystal Lang,我正试图从multipart的io向文件写入字节,但由于某种原因,该文件已关闭 buffer = uninitialized UInt8[2048] File.open( "#{Config::Application::PUBLIC_DIR}/#{file_name}", "w+") do |_file| p "is closed?: #{uploaded_file_io.closed?}" #=> true if (read_bytes_length = upl

我正试图从multipart的io向文件写入字节,但由于某种原因,该文件已关闭

  buffer = uninitialized UInt8[2048]

  File.open( "#{Config::Application::PUBLIC_DIR}/#{file_name}", "w+") do |_file|
    p "is closed?: #{uploaded_file_io.closed?}" #=> true
    if (read_bytes_length = uploaded_file_io.read(buffer.to_slice)) > 0
      _file.write( buffer.to_slice[0, read_bytes_length] )
    end
  end
创建了一个空文件,我可以在目录中看到它,但当我尝试写入它时,流就关闭了(当从多部分IO::Delimeterd读取时)

我做错了什么

另外,如果你知道一些使用IO或Crystal中文件的指南,请分享

编辑: 上传的_文件_io是从rx14/multipart中删除的io::Delimetered,它被分配到HTTP::FormData.parse块中,该块产生如下结果:

    HTTP::FormData.parse(request) do |field, io, meta, headers|

      #that class simply has properties, and is to store what's passed
      value_to_return[field] = MultipartFileWrapper.new(io: io, meta: meta, headers: headers) 

    end

  #later:
  uploaded_file_io = value_to_return["file"].io

如果不知道什么是
上传的\u文件\u io
以及它是如何产生的(在上面的代码段中从未初始化),就不可能给你任何帮助。我已经更新了这个问题,以显示上传的\u文件\u io是如何初始化的。我想一旦你离开这个区块,io会自动为你关闭。此注释似乎还表明:(解析器由FormData使用)。您可能应该在块内完成所有处理。