尝试使用 Google Gears 和 ASP.NET 上传文件...我假设您可以,因为HttpRequest API接受 blob。
我在页面中有 FileUpload 控件。
<asp:FileUpload runat="server" ID="File1" />
然后是 JavaScript
var file1 = document.getElementById("<%# File1.ClientID %>");
var desktop = google.gears.factory.create('beta.desktop');
file1.onclick = function()
{
desktop.openFiles(openFilesCallback,
{
singleFile: true,
filter: ["image/jpeg"]
}
);
return false;
}
function openFilesCallback(files)
{
if(files.length == 0)
{
alert("No files selected");
}
else
{
// 1MB = 1024 * 1024 bytes
if(files[0].blob.length > (1024 * 1024))
{
alert("File '" + files[0].name + "' is too big to upload");
}
else
{
uploadFile(files[0]);
}
}
}
function uploadFile(file)
{
var up = google.gears.factory.create("beta.httprequest");
up.open("POST", "upload.ashx");
up.send(file.blob);
}
但是,我不确定如何在处理程序中处理它。
public void ProcessRequest (HttpContext ctx)
{
ctx.Response.ContentType = "text/plain";
ctx.Response.Write("Hello World");
ctx.Response.Write(ctx.Request.Files.Count.ToString());
ctx.Response.Write(ctx.Request.Form.Count.ToString());
}
如果我在最后两个语句中的任何一个上设置断点,则两者都Files.Count
返回Form.Count
0。当我没有设置断点时,Firebug 中会出现异常:Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED)
如果我不能使用 POST 通过 Gears 上传,可以使用 PUT 完成吗?
编辑: PHP代码也可以(因为我想用两种语言来做)