Сначала нужно признать, что нам нужно ПРИЛОЖИТЬ как входные данные формы, так и файл формы в одну переменную FormData.
Вот мое решение, в котором я включил параметр Multi File , чтобы это решение соответствовало всем примерам.
В большинстве случаев важно включить атрибут имени в элементы управления ввода, чтобы он работал правильно на стороне сервера. Если вы используете C #, вы можете просто использовать Request.Form ["nameAttribute"] , чтобы просто получить функцию. Он похож на Java и другие языки.
Мой пример кода
$(document).ready(function () //Setting up on Document to Ready Function
{
$("#btnUpload").click(function (event) {
//getting form into Jquery Wrapper Instance to enable JQuery Functions on form
var form = $("#myForm1");
//Serializing all For Input Values (not files!) in an Array Collection so that we can iterate this collection later.
var params = form.serializeArray();
//Getting Files Collection
var files = $("#File1")[0].files;
//Declaring new Form Data Instance
var formData = new FormData();
//Looping through uploaded files collection in case there is a Multi File Upload. This also works for single i.e simply remove MULTIPLE attribute from file control in HTML.
for (var i = 0; i < files.length; i++) {
formData.append(files[i].name, files[i]);
}
//Now Looping the parameters for all form input fields and assigning them as Name Value pairs.
$(params).each(function (index, element) {
formData.append(element.name, element.value);
});
//disabling Submit Button so that user cannot press Submit Multiple times
var btn = $(this);
btn.val("Uploading...");
btn.prop("disabled", true);
$.ajax({
url: "Handler.ashx", //You can replace this with MVC/WebAPI/PHP/Java etc
method: "post",
data: formData,
contentType: false,
processData: false,
success: function () {
//Firing event if File Upload is completed!
alert("Upload Completed");
btn.prop("disabled", false);
btn.val("Submit");
$("#File1").val("");
},
error: function (error) { alert("Error"); }
});
});
});
Для рабочего примера (asp.net C # с обработчиками) вы можете посетить пример кода на https://github.com/vibs2006/HttpFileHandlerFormDataSample
Используйте ManagementFactory
для получения OperatingSystemMXBean
и вызов getSystemLoadAverage()
на нем.
Это действительно включает JNI, но существует библиотека GPL от Hyperic, названного Sigar, который предоставляет эту информацию для всех основных платформ, а также набор другой зависимой от операционной системы статистики как использование диска. Это работало отлично для нас.
На Linux Вы могли просто считать файл/proc/loadavg, где первые три значения представляют средние числа загрузки. Для Windows, вероятно, необходимо придерживаться JNI.
В соответствии с Linux Вы могли использовать Время выполнения . должностное лицо () , чтобы выполнить “uptime” и оценить вывод. Я don’t there’s лучший путь в соответствии с Linux и мной don’t думаю there’s одинаково “convenient” путь в соответствии с Windows.
Если Вы используете JRockit JVM, Вы могли бы использовать JMAPI. Это работает на JDK 1.4, 1.5 и 1.6.
System.out.println("Total CPU-usage:" + JVMFactory.getJVM().getMachine().getCPULoad());
System.out.println("Total JVM-load :" + JVMFactory.getJVM().getJVMLoad());
for(Iterator it = JVMFactory.getJVM().getMachine().getCPUs().iterator(); it.hasNext();)
{
CPU cpu = (CPU)it.next();
System.out.println("CPU Description: " + cpu.getDescription());
System.out.println("CPU Clock Frequency: " + cpu.getClockFrequency());
System.out.println("CPU Load: " + cpu.getLoad());
System.out.println();
}