Здесь он написан с использованием кофе-скрипта во всей его красе.
app.post '/upload', (request, response, next) ->
request.form.complete (error, fields, files) ->
if error
next error
else
file = files.file
[kind, extension] = file.type.split '/'
hash = crypto.createHash 'sha256'
stream = fs.createReadStream file.path,
encoding:'binary'
stream.addListener 'data', (chunk) ->
hash.update chunk
stream.addListener 'close', ->
digest = hash.digest 'hex'
new_filename = "#{digest}.#{extension}"
new_path = "#{UPLOAD_DIR}/#{new_filename}"
fs.rename file.path, new_path
response.end new_filename
Вместо того, чтобы превращать вычисление хеш-функции в грозный, что, вероятно, будет более эффективным, но гораздо более сложным, я решил просто повторнопрочитайте файл из его временного местоположения и хэшируйте это.Затем вместо того, чтобы качать его, как в других примерах, я просто переименовал временный файл в его новое местоположение.