8

我正在尝试设置一个 Web 应用程序,其中许多客户端可以通过 Node.js http 服务器进行连接,然后上传/下载文件,然后这些文件将显示在不同的显示器中。我正在考虑将这些文件存储在可以集成到我的应用程序中的免费云服务中。哦,我也在这个项目中使用socket.IO。

Dropbox 提供了一些 API 来做到这一点:https ://www.dropbox.com/developers但我正在寻找一个像 ownCloud 这样的免费解决方案,在那里我可以拥有更多的存储空间,也可以拥有自己的私人服务器。

有谁知道这是否可以做到?或者可以提供有关我的问题的替代解决方案的任何提示?我真的很感激任何帮助,因为我对这一切都很陌生。

4

6 回答 6

13

@Javier Gonzalez,上传文件...

不好的选择:

curl -X PUT "http://yourserver.com/owncloud/remote.php/webdav/file.zip" -F myfile=@"/Users/Javi/Downloads/file.zip"

因为,上传的文件将包含 http 标头。

更好的选择:

curl -X PUT "http://yourserver.com/owncloud/remote.php/webdav/file.zip" --data-binary @"/Users/Javi/Downloads/file.zip"

或者只是使用 curl -T filename url 上传

于 2015-04-01T06:05:13.603 回答
8

您必须在http://yourowncloudserver.com/owncloud/remote.php/webdav/与 WebDav 界面进行通信

要上传文件,您必须对文件的命运发出 PUT 请求,例如:http: //yourowncloudserver.com/owncloud/remote.php/webdav/file.zip

并将输入流添加到读取文件的请求中。

这是 CURL 命令:

curl -X PUT -u username:password "http://yourserver.com/owncloud/remote.php/webdav/file.zip" -F myfile=@"/Users/Javi/Downloads/file.zip"

您还可以检查我们在 Objective C 上的代码以检查我们使用的参数: ownCloud iOS 库

NSMutableURLRequest *request = [self requestWithMethod:@"PUT" path:remoteDestination parameters:nil];
[request setTimeoutInterval:k_timeout_upload];
[request setValue:[NSString stringWithFormat:@"%lld", [UtilsFramework getSizeInBytesByPath:localSource]] forHTTPHeaderField:@"Content-Length"];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
//[request setHTTPBody:[NSData dataWithContentsOfFile:localSource]];

__weak __block OCHTTPRequestOperation *operation = [self mr_operationWithRequest:request success:success failure:failure];

[operation setInputStream:[NSInputStream inputStreamWithFileAtPath:localSource]];
于 2014-07-22T21:21:21.820 回答
4

作为现有答案的补充,我使用以下函数作为别名:

cloud() {
  curl -X PUT -u "<username>:<password>" "https://<hostname>/remote.php/webdav/${2:-$1}" --data-binary @"./$1"
}

只需替换<username>,<password>并将<hostname>其放入您的 .bash_aliases 中,您就可以使用以下命令上传文件:

cloud filename
cloud path filename
于 2017-03-10T09:29:28.043 回答
1

最简单的方法是使用 owncloud 的 webdav 界面

于 2014-07-20T17:56:40.313 回答
0

上传一个文件,您必须对文件的命运发出PUT请求,例如:http://yourOwnCloudServer/remote.php/webdav/text.txt

这是 CURL 命令:

curl -X PUT -u username:password "http://yourOwnCloudServer/remote.php/webdav/text.txt" -F myfile=@"/Users/gokul/Desktop/text.txt"

您也可以--data-binary用于媒体文件。

"http://yourOwnCloudServer/remote.php/webdav/image.jpg" --data-binary @"/Users/gokul/Desktop/image.jpg"
于 2017-06-13T06:21:09.390 回答
0

在 windows 和 owncloud 8 中使用 curl。我发现传输文件的唯一方法是使用此命令

curl -u user:password --upload-file "c:\path to file\srcfile" "https://ocserver/owncloud/remote.php/webdav/tgtfile"

希望这可以帮助

于 2016-03-16T20:11:08.490 回答