如何在 CefSharp 中读取上传的文件?
How can I read uploaded file in CefSharp?
用户使用我的浏览器基于CefSharp。他使用 XMLHttpRequest
将文件(在文件输入 HTML 控件中选择)上传到已知服务器(它是 AJAX 请求的 JavaScript 对象)。我想拦截并在我的浏览器中读取上传文件。
我在基于 Awesomium 的浏览器中使用 IResourceInterceptor
执行相同的操作。这很容易,因为 ResourceRequest
参数包含文件的完整本地路径。我怎样才能在 CefSharp 浏览器中做同样的事情?
用户如何使用 XMLHttpRequest (JavaScript) 上传文件:
var file = document.getElementById('fileInput').files[0];
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('POST', '/upload', true);
xhr.send(formData);
Awesomium 拦截用户文件的方式(C#):
class MyResourceInterceptor : IResourceInterceptor
{
public ResourceResponse OnRequest(ResourceRequest request)
{
// intercept URL with /upload path only
if (request.Url.AbsolutePath != "/upload")
{
return null;
}
// full local path for user's file
var filePath = request[1].FilePath;
// now I can read and process the file
}
public bool OnFilterNavigation(NavigationRequest request)
{
return false;
}
}
CefSharp
目前没有提供访问 Post Data
的方法,我猜你需要的是什么。
我已经实现了一个包含基本实现的 PR
,请随意测试。参见 https://github.com/cefsharp/CefSharp/pull/1113
您的另一个选择是实现 OnFileDialog
,您必须显示自己的对话框,虽然很简单。
https://github.com/cefsharp/CefSharp/blob/cefsharp/41/CefSharp/IDialogHandler.cs#L38
用户使用我的浏览器基于CefSharp。他使用 XMLHttpRequest
将文件(在文件输入 HTML 控件中选择)上传到已知服务器(它是 AJAX 请求的 JavaScript 对象)。我想拦截并在我的浏览器中读取上传文件。
我在基于 Awesomium 的浏览器中使用 IResourceInterceptor
执行相同的操作。这很容易,因为 ResourceRequest
参数包含文件的完整本地路径。我怎样才能在 CefSharp 浏览器中做同样的事情?
用户如何使用 XMLHttpRequest (JavaScript) 上传文件:
var file = document.getElementById('fileInput').files[0];
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('POST', '/upload', true);
xhr.send(formData);
Awesomium 拦截用户文件的方式(C#):
class MyResourceInterceptor : IResourceInterceptor
{
public ResourceResponse OnRequest(ResourceRequest request)
{
// intercept URL with /upload path only
if (request.Url.AbsolutePath != "/upload")
{
return null;
}
// full local path for user's file
var filePath = request[1].FilePath;
// now I can read and process the file
}
public bool OnFilterNavigation(NavigationRequest request)
{
return false;
}
}
CefSharp
目前没有提供访问 Post Data
的方法,我猜你需要的是什么。
我已经实现了一个包含基本实现的 PR
,请随意测试。参见 https://github.com/cefsharp/CefSharp/pull/1113
您的另一个选择是实现 OnFileDialog
,您必须显示自己的对话框,虽然很简单。
https://github.com/cefsharp/CefSharp/blob/cefsharp/41/CefSharp/IDialogHandler.cs#L38