我正在尝试使用本机Fetch和FormData 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
我正在建立一个在立方体表面上玩的蛇游戏.目前它使用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
什么是这个游戏世界的合适,简洁的启发式?
我注意到一个我几天都无法解决的奇怪问题.
我有一个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) 在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 ×3
a-star ×1
backbone.js ×1
capybara ×1
coffeescript ×1
ecmascript-6 ×1
ember.js ×1
jquery ×1
path-finding ×1
performance ×1
rspec ×1
zepto ×1