2013-02-22 146 views
0

我正面临着上传图像到服务器的问题。 即时通讯使用winjs XHR交上传图像服务器Windows8使用winjs xhr将图像上传到php服务器POST

问题是在PHP upload_field没有定义索引错误请在下面找到用于从窗8.

function pickImage() { 
// Create the picker object and set options 
var openPicker = new Windows.Storage.Pickers.FileOpenPicker(); 
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail; 
openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary; 
// Users expect to have a filtered view of their folders depending on the scenario. 
// For example, when choosing a documents folder, restrict the filetypes to documents for your application. 
openPicker.fileTypeFilter.replaceAll([".png", ".jpg", ".jpeg"]); 

// Open the picker for the user to pick a file 
openPicker.pickSingleFileAsync().then(function (file) { 
    if (file) { 
     // Application now has read/write access to the picked file 
     WinJS.log && WinJS.log("Picked photo: " + file.name, "sample", "status"); 
var fdata = new FormData(); 
fdata.append('upload_field',file); 

     WinJS.xhr({ 
      type: "post", 
      url: "http://localhost/imgupload.php", 
      data: fdata, 
      // headers: { "Content-type": "application/octet-stream" } 


     }).done(function (result) { 
      console.log(result.responseText) 
     }); 

     document.getElementById('imgCapture').src 
    = window.URL.createObjectURL(file); 
    } else { 
     // The picker was dismissed with no selected file 
     WinJS.log && WinJS.log("Operation cancelled.", "sample", "status"); 
    } 
}); 

}

上传图像的代码库下面是我的PHP代码库。

$filesize = filesize($_FILES['upload_field']['tmp_name']); 
echo "The uploaded file size is " . $filesize . " bytes\n"; 
echo "Stored in: " . $_FILES["upload_field"]["tmp_name"]; 
$timestamp = time(); 

if (file_exists("upload/" . $_FILES["upload_field"]["name"])) 
    { 
    echo $_FILES["upload_field"]["tmp_name"] . " already exists. "; 
    } 
else 
    { 
    $fname = $timestamp.$_FILES["upload_field"]["name"]; 
    move_uploaded_file($_FILES["upload_field"]["tmp_name"], 
    "upload/" . $fname); 
    echo "Stored in: " . "upload/" .$fname ; 
    } 
echo "image uploaded"; 

请帮助我 - 感谢您的帮助。

回答

2

您不应该直接使用该文件对象。您必须打开该文件并使用它创建一个Blob。 请试试像这样:

openPicker.pickSingleFileAsync().then(function (file) { 
    file.openAsync(Windows.Storage.FileAccessMode.read).done(function (stream) { 
     var blob = MSApp.createBlobFromRandomAccessStream("image/jpg", stream); 
     var fdata = new FormData(); 
     fdata.append('upload_field',blob); 

     WinJS.xhr({ 
      type: "post", 
      url: "http://localhost/imgupload.php", 
      data: fdata, 
      // headers: { "Content-type": "application/octet-stream" } 


     }).done(function (result) { 
      console.log(result.responseText) 
     }); 
    }); 
}); 
相关问题