在 R 函数中,我用作fileName
参数来读取和处理该文件中存在的 csv 数据。我使用rook
包将 R 与 javascript 集成。在 javascript 中,我使用以下代码来获取导入文件的文件名。
<form id='importPfForm'>
<input type='file' name='datafile' size='20'>
<input type='button' value='IMPORT' onclick='importPortfolioFunction()'/>
</form>
function importPortfolioFunction( arg ) {
var f = document.getElementById( 'importPfForm' );
var fileName= f.datafile.value;
$.ajax( {
type : "POST",
url : 'http://localhost:'+portNo+'/custom/Ralgotree/hBasedFileImport?fileName='+fileName,
dataType : "json",
data : '{ "method" : "hBasedFileImport", "clientId": "31d0c653-d7e5-44b6-98b5-8c084f99514a", "version": 0 }',
xhrFields: {
withCredentials: false
},
beforeSend : function(xhr) {},
success : function(data, textStatus, xmLHttpRequest){
},
error : function(xhr, ajaxOptions, thrownError) {
}
});
}
由于这种方法只传递文件名而不是完整的文件路径,我不会在 R 中得到输出。所以我需要做些什么修改才能得到准确的输出。我正在使用以下 R 代码:
s <- Rhttpd$new()
s$add(
name="Ralgotree",
app=Rook::URLMap$new(
'/hBasedFileImport' = function(env){
req <- Rook::Request$new(env)
params <- Utils$parse_query(env$QUERY_STRING);
res <- Rook::Response$new(headers = list( "Content-Type"="application/json" , "Access-Control-Allow-Origin"="*"))
res$write(toJSON(hBasedFileImport(toString(params["fileName"]))))
res$finish()
}
)
)
s$start(port = 9000)
hBasedFileImport <- function(fileName){
portData <- read.csv(fileName,sep="\t")
-----
-----
}