小编Mar*_*ska的帖子

使用Fetch和FormData API上传多个文件

我正在尝试使用本机FetchFormData API一次将多个文件上载到服务器,但是我终生无法正常工作。这是我得到的:

// acceptedFiles are File objects coming from `react-dropzone`.
function handleSubmit(acceptedFiles) {
  const data = new FormData();

  for (const file of acceptedFiles) {
    data.append('files', file, file.name);
  }

  return fetch('https://example.com/api/upload', {
    method: 'POST',
    body: data,      
  });
}
Run Code Online (Sandbox Code Playgroud)

但是我的Rails服务器收到的是:

Parameters: {"files"=>#
<ActionDispatch::Http::UploadedFile:0x00007feb347becc0 @tempfile=#
<Tempfile:/var/folders/kl/y1jrp7zs55sbx075jjjl3p280000gn/T/RackMultipart201
71112-6486-1ftkufy.mp4>, @original_filename="SampleVideo_1280x720_5mb.mp4",
 @content_type="video/mp4", @headers="Content-Disposition: form-data; 
name=\"files\"; filename=\"SampleVideo_1280x720_5mb.mp4\"\r\nContent-Type:
 video/mp4\r\n">}
Run Code Online (Sandbox Code Playgroud)

换句话说,看起来files实际上只是一个文件。但是文档FormData说追加应该追加多个文件

那么怎么了?

javascript ruby-on-rails multipartform-data ecmascript-6 react-dropzone

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

立方体表面的星寻路算法启发式算法

我正在建立一个在立方体表面上玩的蛇游戏.目前它使用Dijkstra的算法进行寻路.尽管使用set和priority队列数据结构进行了优化,但它仍然有点太慢.当蛇吃食物并开始寻找新食物时,你会注意到延迟.

我试图让它使用A*而不是我找不到一个好的启发式.在有4个运动方向的平面网格上,我会使用曼哈顿距离.我已经尝试过使用3D曼哈顿距离了abs(dx) + abs(dy) + abs(dz),这个距离并不合理:对于蛇来说,游戏世界实际上是6个网格(对应于立方体的面),具有不寻常的环绕特性.

在代码中,每个方块存储在grid[15][15]2D数组中.每个面都有6个这样的数组.因此每个方块都有一个(arrayX, arrayY, d)三元组来描述2D数组中的偏移并指定哪个数组.此外,每个方块都有一个(x, y, z)描述空间位置的三元组.

这是寻路发生的游戏代码区域:

https://github.com/mhluska/Snakeception/blob/master/src/js/game.coffee#L105

这是A*的库代码:

https://github.com/mhluska/Stimpack/blob/master/src/js/graph.coffee#L60

什么是这个游戏世界的合适,简洁的启发式?

javascript performance a-star path-finding coffeescript

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

Capybara + Selenium-webdriver + RSpec文件夹具+ SSR给出Net :: ReadTimeout

我注意到一个我几天都无法解决的奇怪问题.

我有一个Rails 5 API服务器,系统测试使用RSpec和Capybara + Selenium-webdriver驱动无头Chrome.

我正在Capybara.app_host = 'http://localhost:4200'使测试成为一个运行Ember前端的独立开发服务器.Ember前端查看要知道的用户代理,然后将请求发送到Rails API测试数据库.

除了使用RSpec文件夹具的测试外,所有测试都运行良好.

这是一个失败的规范:

describe 'the affiliate program', :vcr, type: :system do
  fixtures :all

  before do
    Capybara.session_name = :affiliate
    visit('/')
    signup_and_verify_email(signup_intent: :seller)
    visit_affiliate_settings
  end

  it 'can use the affiliate page' do
    affiliate_token = page.text[/Your affiliate token is \b(.+?)\b/i, 1]
    expect(affiliate_token).to be_present

    # When a referral signs up.
    Capybara.session_name = :referral
    visit("?client=#{affiliate_token}")
    signup_and_verify_email(signup_intent: :member)

    refresh

    # It can track the referral.
    Capybara.session_name = :affiliate
    refresh
    expect(page).to have_selector('.referral-row', count: 1) …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails capybara ember.js selenium-webdriver

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

在Zepto中指定$ .ajax JSONP回调名称

在jQuery中,

$.ajax({ 
    url: 'http://reddit.com/r/aww.json', 
    dataType: 'jsonp',
    jsonp: 'jsonp'
});
Run Code Online (Sandbox Code Playgroud)

向以下URL发送请求:

http://www.reddit.com/r/aww.json?jsonp=jsonp1354967449950.

但在Zepto中,相同的函数调用发送请求:

http://www.reddit.com/r/aww.json?callback=jsonp4

Reddit API要求将JSONP回调命名为'jsonp'.通过Zepto源代码,我感觉不支持'jsonp'选项.

如何在Zepto中模拟这个jQuery行为?

注意:我试图通过覆盖集合的sync函数并调用collection.fetch()来在Backbone.js中获取此行为,类似于以下代码:https://gist.github.com/1245613.我很好奇是否有更惯用的做法.

javascript jquery backbone.js zepto

5
推荐指数
1
解决办法
2559
查看次数