我正在使用Asp.Net MVC和C#开发Web应用程序。允许用户上传通过I've Fixed it by changing Gradle distributionUrl in "gradle-wrapper.properties".
Here is what I have configured:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
完成的文件。我要做的是将用户上传的每个文件名添加到require 'rails_helper'
require 'capybara-screenshot/rspec'
require 'capybara/dsl'
require 'capybara/poltergeist'
Dir[Rails.root.join('spec/features/support/**/*.rb')].each { |f| require f }
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {
js_errors: false,
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any'],
debug: false,
:timeout => 120,
window_size: [1600, 1200],
# timeout: 5.minutes,
extensions: [
Rails.root.join('spec/features/support/phantomjs/disable_animations.js')
]
})
end
RSpec.configure do |config|
config.include Auth
config.include General
end
Capybara.configure do |config|
config.default_selector = :css
config.javascript_driver = :poltergeist
# config.javascript_driver = :poltergeist_debug
config.server_host = 'foo.xxx.localhost'
Capybara.server_port = 3001
config.default_max_wait_time = 10
end
。为此,我有以下代码:
jQuery ajax
上述代码每次上传文件并将文件名添加到List<string>
时,之前的计数始终为 0 ,而不是包含所有以前文件名的全部。
有人可以告诉我如何实现这一目标。
答案 0 :(得分:1)
为每个请求创建一个新的Controller实例。因此,您的列表是每个请求的新实例。您需要将此列表保留在其他位置。
如果您只需要用户在网站上的一段时间的信息,您可以使用会话。
然而,由于文件上传,我怀疑您可能希望更长期地存储信息,以便返回的用户可以看到他们上传的内容。在这种情况下,请在每个请求中将信息保存到数据库中。
答案 1 :(得分:0)
您可以使用与此类似的代码将List添加到会话中:
if (Session["UploadedFileNames"] != null)
{
Session["UploadedFileNames"] = new List<string>() { fileName };
}
else
{
var list = (Session["UploadedFileNames"] as List<string>);
list.Add(fileName);
Session["UploadedFileNames"] = list;
}
答案 2 :(得分:-3)
问题可能是每次用户尝试上传文件时都会初始化FileuploadController类,因此UploadedFilenames
列表会在每次上传时重置为空列表,将UploadedFileNames
字段设为静态以防止这种情况发生。