问题标签 [sendfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2579 浏览

c++ - sendfile 不复制文件内容

我创建文件1.txt 2.txt并将一些内容写入1.txt.
然后我使用下面的代码并将内容复制到2.txt.
但它不起作用。里面什么都没有2.txt

你能解释一下我的错误吗?

0 投票
2 回答
2315 浏览

ruby-on-rails - 使用 rails 创建一个下载链接到带有 at URL 的外部文件

我将文件存储移动到 Rackspace Cloudfiles,它破坏了我的 send_file 操作。

老的

新的

当文件在公共文件中时。代码效果很好。当您单击链接时,文件将下载并且网页不会更改。现在它给出了这个错误。

我错过了什么?

非常感谢您的参与。

0 投票
1 回答
866 浏览

ruby-on-rails - delay_job 类中的 send_file

我在 delay_job gem 的帮助下在后台生成 xls 文件。在此之后,我想将文件发送给用户。有没有办法在 delay_job 类的控制器之外调用 send_file 方法?

0 投票
1 回答
1521 浏览

c# - 使用 Socket.SendFile() 传输 *.exe 文件时遇到问题

在 Win7 x64 上的 Visual Studio 2012 Ult 中使用 .NET 4.5 中的 C#。

我正在尝试使服务器通过该System.Net.Sockets.Socket.SendFile(string filename)方法传输文件,并让客户端接收它。客户端将接收到的字节附加到它创建的文件的末尾,以在其一侧重建发送的文件。这一切都有效 - 至少对于基本的文本文件。

当我尝试发送 *.exe 文件时,收到的 *.exe 不起作用。在 Notepad++ 中打开源 *.exe 和客户端副本,文件似乎是正确的,只是一些看起来很奇怪的字符不正确。我的问题是我该如何解决这个问题?

由于服务器代码实际上只是使用Socket.SendFile(string filename)没有其他相关选项来发送文件,因此我假设客户端是问题所在。

在客户端:

我的猜测是编码string received = Encoding.UTF8.GetString(obj.buffer);不正确,但我已经尝试了所有的 Encoding.something 选项,但它们都没有正确传输文件。

或者,也许文件编写System.IO.TextWriter fileStream = File.AppendText(string filename);器是问题所在?

0 投票
1 回答
429 浏览

linux - Linux >2.6.33:sendfile() 可以用来实现更快的“猫”吗?

必须将许多大文件连接成一个更大的单个文件,我们目前使用

但想知道是否可以比与那个老朋友更快地完成。

阅读手册页sendfile(),可以指定 *input_file* 的偏移量,从哪里将其剩余部分发送到 *output_file*。但是:我还可以指定 *output_file* 的偏移量吗?或者我可以简单地循环所有输入文件,只需打开我的输出 FD 和 sendfile()'ing 重复进入它,有效地连接 *input_files*?换句话说:如果我不关闭它也不在其中寻找(),指向我的输出 FD 的文件指针是否会保留在其末尾?

有人知道这样的cat实现sendfile()吗?


诚然,我是管理员,而不是程序员,所以请忍受我缺乏“真正的”编码知识......

0 投票
1 回答
1492 浏览

java - 使用套接字将文件从客户端发送到服务器,但得到一些大小为零的文件

我正在写一些代码

  1. 客户端从命令行获取文件名(文本文件)
  2. 客户端将每个文件转换为字节数组,然后将此数组发送到服务器。
  3. 服务器启动一个新线程,每个线程将字节数组转换为某个指定目录中的新文件。

我的客户代码是

对于客户端

服务器端

问题:服务器无法正确获取文件意味着有时新文件的大小为零(无数据)。例如,我检查过使用 java Client *c 服务器发送 239 个 c 文件,服务器正在接收随机数量的文件(在范围 180-235) 甚至它接收的某些文件大小为零。

0 投票
1 回答
5226 浏览

c# - 尝试对无法访问的主机 windows CE 进行套接字操作

我正在通过无线从智能设备 windows CE 向 PC 发送文件,该文件通过 TCP 发送,当我通过笔记本电脑的主动同步部署应用程序来测试它时,它可以正常工作。但是当应用程序安装在设备内时,它没有发送文件,它向我显示异常:尝试对无法访问的主机进行套接字操作,代码如下

我不知道如何解决这个错误请帮助

0 投票
1 回答
227 浏览

android - Nexus 7 Android 文件传输(Android 中的套接字编程)

这是我的 android 客户端类代码。但是当我说连接时它崩溃并关闭。我在清单上添加了权限(清单上没有问题)。我过去在不同的平板电脑上使用了 code 的一部分。但我尝试了 Nexus 7,它就崩溃了。

这也是我的清单权限:

谁能知道我的nexus 7有什么问题?我也以开发人员的身份打开了nexus 7,但没有任何改变。同样它崩溃了。

0 投票
1 回答
4023 浏览

c# - FileStream 抛出找不到文件

该程序旨在设置文件路径,其想法是设置数据时,应使用此功能:

将文件路径中给定的文件发送到接收文件数据的服务器端程序。

问题是,当它到达该行时FileStream openFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);,它告诉我找不到该文件。它给出的例外是,Exception:Thrown: "The process cannot access the file 'D:\StepMania\Songs\Fragma\You Are Alive\Green.avi' because it is being used by another process." (System.IO.IOException) A System.IO.IOException was thrown: "The process cannot access the file 'D:\*FilePath*\Green.avi' because it is being used by another process." Time: 04-05-2013 21:11:39 Thread:Main Thread[5532]但我想不出在 StepMania 未运行时会使用此文件的任何进程。我知道该文件在那里,因为我检查了文件路径并且它应该在那里。如果文件与程序位于完全相同的文件夹中,它就可以正常工作,但除此之外,我似乎找不到解决此问题的方法。有没有人对可能出现的问题有任何想法?

如果您需要更多我的代码,请告诉我。

编辑:我的服务器使用此代码接收文件:

0 投票
0 回答
895 浏览

ruby-on-rails - Nginx 在使用 send_file 提供受保护资产时抛出 HTTP 500

我在使用 Nginx + Unicorn + Rails 提供受保护资产 (PDF) 时遇到问题。问题是有时文件被正确发送,但有时 Nginx 返回 HTTP 500,尽管 Rails 日志看起来不错:

Nginx:

PapersController 有一个成员操作下载,它只是发送 PDF(资产使用 Carrierwave 上传),因此控制器如下所示:

Rails 配置为与 Nginx 一起使用,因此 sendfile 标头在以下位置正确设置production.rb

我的主要 Ngnix 配置是非常标准的,对于该站点,它被配置为使用 Unicorn 作为上游服务器,我添加了一个额外的位置用于上传目录,使其不可浏览,但 Nginx 能够从该目录提供资产。

nginx.conf:

站点配置:

由于来自 Nginx 的访问日志没有真正的帮助,我打开了调试日志,这就是 HTTP 500 情况下的日志的样子:

有人知道出了什么问题吗?最奇怪的是,它是不可复制的。有时有效,有时无效!

任何帮助深表感谢!