Google GearsとASP.NETを使用してファイルをアップロードしようとしています... HttpRequest APIがブロブを受け入れることができると思います。Google GearsとASP.NETまたはPHPを使用してファイルをアップロード
私はページに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)
私が使用できない場合Gears経由でアップロードするPOSTは、PUTを使用して行うことはできますか?
編集: PHPコード(私は両方の言語でそれをやりたいので)だけでなく罰金になります
おかげでてきたので、長い、長い、長い時間がかかった....私はPHP側の多くを助けることができない怖いです(既にmultipart-form/dataを使用していたので問題はなかった)。 JSONを使用してデシリアライズするのではなく、追加のメタデータのリクエストヘッダーを設定しています。 – SamWM