我想编写一个 WCF Web 服务,可以通过线路将文件发送到客户端。所以我有一个发送流响应的设置。这是我在客户端的代码:
private void button1_Click(object sender, EventArgs e)
{
string filename = System.Environment.CurrentDirectory + "\\Picture.jpg";
if (File.Exists(filename))
File.Delete(filename);
StreamServiceClient client = new StreamServiceClient();
int length = 256;
byte[] buffer = new byte[length];
FileStream sink = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
Stream source = client.GetData();
int bytesRead;
while ((bytesRead = source.Read(buffer,0,length))> 0)
{
sink.Write(buffer,0,length);
}
source.Close();
sink.Close();
MessageBox.Show("All done");
}
Run Code Online (Sandbox Code Playgroud)
一切都进展顺利,没有错误或异常。问题是,当我打开正在传输的 .jpg 文件时,该文件被报告为“已损坏或太大”。
我究竟做错了什么?
在服务器端,这是发送文件的方法。
public Stream GetData()
{
string filename = Environment.CurrentDirectory+"\\Chrysanthemum.jpg";
FileStream myfile = File.OpenRead(filename);
return myfile;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 WCF Web 服务中提取大量数据。请求相当小,而响应消息将非常大。目前,由于 IIS6 对其可分配的内存(~1.4GB)有限制,Web 服务正在引发 SystemOutOfMemory 异常。
我在一些博客中读到,实施流式传输可以解决我的问题。
有人可以分享他们在这个主题上的经验吗?我对任何可以共享的示例客户端和服务端代码或任何建议/最佳实践最感兴趣。内存流与文件流?返回类型应该是Stream、Message、Byte[]?
我的操作如下所示:(通常它会在响应数组中返回大量元素,约 200K 个元素)
MediumSizeResponseClass[] GetData(SmallSizeRequestClass request)
Run Code Online (Sandbox Code Playgroud) 我认为 MVC 应该让这一切变得更容易,但我正在尝试各种方法并遇到问题。
如果我尝试接受这个问题的答案(相应地更改内容类型)...如何创建文件并通过 ASP.NET MVC 中的 FileResult 返回它?
...我遇到了麻烦,因为我在 xml 文件中的编码是 UTF-16。
我得到的错误是:
不支持从当前编码切换到指定编码。
这表明我需要在某个地方告诉 MVC 我想要 UTF-16。或者,我想要一种使用二进制而不是文本的不同方法。
这个问题非常普遍,因为我是 iOS、视频流和蓝牙方面的新手(这将是一个有趣的项目)。
基本上,我希望能够通过 WiFi 或蓝牙(具体取决于可用的设备)将低分辨率视频从一台 iOS 设备传输到另一台 iOS 设备。Bonjour 用于初始服务发现。(我知道通过蓝牙传输视频流并不理想,但这是该项目的要求之一)
因此,问题是可以使用什么视频流框架/库来最大化 WiFi 流视频和蓝牙流视频之间共享的代码量。
我的应用程序应该将一个大文件流回浏览器,即远程服务器。目前,该文件由本地 NodeJS 服务器提供。
我正在使用 25GB 的 VirtualBox 磁盘映像,只是为了确保它在流式传输时没有存储在内存中。这是我正在努力的相关代码
require __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Stream\Stream;
use GuzzleHttp\Stream\LimitStream;
$client = new \GuzzleHttp\Client();
logger('==== START REQUEST ====');
$res = $client->request('GET', 'http://localhost:3002/', [
'on_headers' => function (\Psr\Http\Message\ResponseInterface $response) use ($res) {
$length = $response->getHeaderLine('Content-Length');
logger('Content length is: ' . $length);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="testfile.zip"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $length);
}
]);
$body = $res->getBody();
$read = 0;
while(!$body->eof()) {
logger("Reading chunk. " . $read);
$chunk …Run Code Online (Sandbox Code Playgroud) 我正在将数据从惯性传感器流式传输到 C# 应用程序中。数据有点嘈杂,所以我需要添加一个过滤器来平滑它。我有一个卡尔曼滤波器实现,在给定数组时效果很好,但我无法理解如何在恒定数据流上使用它。
我有:
double sensorData; //the noisy value, constantly updating from another class.
Run Code Online (Sandbox Code Playgroud)
过滤器:
public static double[] noisySine = new double[20] { 40, 41, 38, 40, 45, 42, 43, 44, 40, 38, 44, 45, 40, 39, 37, 41, 42, 70, 44, 42 };
public static double[] clean = new double[20];
public static void KalmanFilter(double[] noisy)
{
double A = double.Parse("1"); //factor of real value to previous real value
// double B = 0; //factor of real value to real …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 4 个虚拟机上运行扩展 Yahoo Benchmark。每次我尝试运行“STORM_TEST”时都会收到以下错误。我尝试配置“redis.conf”但仍然遇到相同的错误。我在下面显示了错误和我的“redis.conf”文件。
错误:
Caused by: java.lang.Exception: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting …Run Code Online (Sandbox Code Playgroud) 我有一个 go 服务器正在读取并返回捆绑到 tar 中的大型数据文件。我已经测试过这可以工作并将 tar 分成几部分,并且当所有数据加载时,一切都很好。
问题是,可能会出现意外错误,导致下载中断。我当前编写了一个 HTTP 错误代码和一条错误消息,但错误消息只是放在流/文件的末尾。有没有好的方法来传达导出中途失败的情况?是否可以使用 HTTP 状态代码并提供错误消息来做到这一点?
我正在使用以下curl命令:
curl --insecure https://127.0.0.1/api/export/030e28f3-4ab6-446a-852e-fda0a497ffe2 -o "test.tar"
Run Code Online (Sandbox Code Playgroud)
我是否也必须更改curl命令来检测错误?
我已经使用 ffmpeg 为我的视频创建了一个 MPD 文件,我可以使用:http : //dashplayer.azurewebsites.net/在我的电脑上播放和观看它
现在我想确保它在andoid和IOS上正常工作和播放,谁能告诉我如何在android和IOS上测试这个文件?
在我使用 Spring Boot 框架构建的服务器端,它返回一个如下所示的流:
public ResponseEntity<StreamingResponseBody> downloadFiles(@RequestBody DownloadRequest payload) {
// Set proper header
String contentDisposition = "attachment;filename=download.zip";
// Build the response stream
StreamingResponseBody stream = outputStream -> {
archiveManagerService.downloadFiles(payload.getArchiveId(), payload.getFiles(), outputStream);
};
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/zip"))
.header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
.body(stream);
}
Run Code Online (Sandbox Code Playgroud)
这对我来说可以。我可以使用 Postman 下载文件。现在,我需要使用Axios从客户端调用此端点。经过一番搜索,我找到了一个名为StreamSaver.js的库。该库与fetch 配合良好(查看源代码以查看示例代码)。但是,我不知道如何将它与 Axios 一起使用。
目前,我的代码如下所示(我使用 Vuejs):
import axios from 'axios';
import streamSaver from 'streamsaver';
const instance = axios.create({
baseURL: '<my_base_url>',
headers: {
'Content-Type': 'application/json'
}
});
instance.post('/download', postData, {
responseType: 'stream' …Run Code Online (Sandbox Code Playgroud) streaming ×10
c# ×2
stream ×2
wcf ×2
.net ×1
asp.net-mvc ×1
axios ×1
benchmarking ×1
bluetooth ×1
curl ×1
ffmpeg ×1
guzzle ×1
http ×1
ios ×1
javascript ×1
mpeg-dash ×1
php ×1
redis ×1
spring-boot ×1
vue.js ×1
web-services ×1
wifi ×1
xml ×1