小编SSH*_*his的帖子

使用PHP查看S3中是否存在对象

我正在使用PHP,我正在使用S3 API上传文件,但我想确保在上传之前存储桶中不存在这个确切的文件名.

我在网上找到了一些使用"file_get_contents"的例子但是这不意味着你必须先下载整个文件吗?通常,这些文件大约是10 MB,所以理想情况下,我真的不想这样做.

有没有办法在不下载文件的情况下使用"file_get_contents"?

或者更好的是,也许我可以使用API​​请求来查看文件名是否存在?

对于我来说,内容或文件大小是否相同只是文件名并不重要.

php amazon-s3

32
推荐指数
3
解决办法
4万
查看次数

超级测试预期未正确断言状态代码

我有一个如下所示的测试:

  it('should fail to get deleted customer', function(done) {
    request(app)
      .get('/customers/'+newCustomerId)
      .set('Authorization', 'Bearer ' + token)
      .set('Accept', 'application/json')
      .expect('Content-Type', /json/)
      .expect(404, done)
  });
Run Code Online (Sandbox Code Playgroud)

我已阅读此处的文档:

https://github.com/visionmedia/supertest

它是这么说的:

请注意如何将 did 直接传递给任何 .expect() 调用

不起作用的代码行是.expect(404, done)如果我将其更改为.expect(200, done)那么测试不会失败。

但是,如果我添加这样的结尾:

  it('should fail to get deleted customer', function(done) {
    request(app)
      .get('/customers/'+newCustomerId)
      .set('Authorization', 'Bearer ' + token)
      .set('Accept', 'application/json')
      .expect('Content-Type', /json/)
      .expect(200)
      .end(function(err, res) {
          if (err) console.log(err);
          done();
      });
  });
Run Code Online (Sandbox Code Playgroud)

然后测试失败。为什么.expect(200, done)也不失败呢?

node.js jasmine supertest

7
推荐指数
1
解决办法
5180
查看次数

从S3获取视频并使用PHP上传到YouTube

我有一些代码可以将视频文件上传到YouTube:

$yt = new Zend_Gdata_YouTube($httpClient);

// create a new VideoEntry object
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();

// create a new Zend_Gdata_App_MediaFileSource object
$filesource = $yt->newMediaFileSource('file.mov');
$filesource->setContentType('video/quicktime');
// set slug header
$filesource->setSlug('file.mov');
Run Code Online (Sandbox Code Playgroud)

我在S3中有视频,我想将它们上传到YouTube.我们S3帐户中的视频是公开的,因此我可以使用像wget这样的命令.在运行此脚本(shell_exec("wget ".$s3videoURL))之前,我应该运行一个命令来获取视频文件并将其下载到本地吗?

或者我应该尝试输入MediaFileSource作为S3文件本身的URL?

主要是,我只需要稳定性(不是经常超时的解决方案); 速度和本地存储并不重要(我可以在上传视频文件后在本地删除).

最好的方法是什么?

谢谢!

更新:我应该提一下,这个剧本将在每次执行时将大约5个视频上传到YouTube.

php youtube upload amazon-s3

6
推荐指数
1
解决办法
3830
查看次数

使用Key作为数字PHP访问对象

我有一个看起来像这样的对象:

stdClass Object
(
    [page] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [element] => stdClass Object
                        (
                            [background_color] => stdClass Object
...
Run Code Online (Sandbox Code Playgroud)

当我打印时print_r($arr->page):

stdClass Object
(
    [1] => stdClass Object
        (
            [element] => stdClass Object
                (
                    [background_color] => stdClass Object
                        (
Run Code Online (Sandbox Code Playgroud)

但这没有任何印刷品:

print_r($arr->page->{"1"});
Run Code Online (Sandbox Code Playgroud)

这会输出错误:

print_r($arr->page->1); 
Run Code Online (Sandbox Code Playgroud)

解析错误:语法错误,意外T_LNUMBER,期待T_STRING或T_VARIABLE或'{'或'$'i

如何访问"1"元素?

更新:

我也试着$arr->page[1]$arr->page["1"],但得到这个错误:

致命错误:不能使用stdClass类型的对象作为数组

更新2:

var_dump($arr->page);
Run Code Online (Sandbox Code Playgroud)

打印这个:

 object(stdClass)#3 (1) {   [1]=>   
   object(stdClass)#4 (1) {
     ["element"]=>
     object(stdClass)#5 (20) {
       ["background_color"]=>
       object(stdClass)#6 (7) {
Run Code Online (Sandbox Code Playgroud)

php oop object

6
推荐指数
2
解决办法
5073
查看次数

在 Elasticsearch 中获取值的百分比

我有一些看起来像的测试文档

"hits": {
        ...
            "_source": {
               "student": "DTWjkg",
               "name": "My Name",
               "grade": "A"
            ...
               "student": "ggddee",
               "name": "My Name2",
               "grade": "B"
            ...
               "student": "ggddee",
               "name": "My Name3",
               "grade": "A"
Run Code Online (Sandbox Code Playgroud)

我想得到成绩为 B 的学生的百分比,结果是“33%”,假设只有 3 个学生。

我将如何在 Elasticsearch 中做到这一点?

到目前为止,我有这个聚合,我觉得很接近:

"aggs": {
    "gradeBPercent": {
        "terms": {
            "field" : "grade",
            "script" : "_value == 'B'"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将返回:

"aggregations": {
      "gradeBPercent": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "false",
               "doc_count": 2
            },
            {
               "key": "true",
               "doc_count": 1
            }
         ]
      } …
Run Code Online (Sandbox Code Playgroud)

aggregation elasticsearch

4
推荐指数
1
解决办法
7706
查看次数

函数期望在C中返回值

我是C的新手,我正在研究其他人的代码,我正试图摆脱一个看起来像这样的警告:

warning: function expects to return value: myfunc
Run Code Online (Sandbox Code Playgroud)

myfunc是这样声明的,(我相信它默认为int)

myfunc(int id, int age) {

   ...
   return;

}
Run Code Online (Sandbox Code Playgroud)

所以我尝试在myfunc后面放置void,使它看起来像这样

void myfunc(int num, int age) {
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

标识符已重新声明:myfunc

    current : function() returning void

    previous: function() returning int : "students.c", line 233
Run Code Online (Sandbox Code Playgroud)

但是当我去student.c的第233行时,这只是我实际上称之为函数的第一个地方.为什么会这样?

我知道我可以更改returnreturn 0;然后将myfunc定义为int.但是当调用这个函数时,它没有分配给任何东西,它只是执行myfunc(current_id, age);(int i = myfunc(...例如).

在这种情况下,最好不要使用void吗?可以return;void函数中使用吗?

谢谢!

c function void

0
推荐指数
1
解决办法
423
查看次数