public void DeleteFile(PortableDeviceFile file) { var variant = new PortableDeviceApiLib.tag_inner_PROPVARIANT(); IPortableDeviceContent content = null; try { this._device.Content(out content); StringToPropVariant(file.Id, out variant, 2); PortableDeviceApiLib.IPortableDevicePropVariantCollection objectIds = new PortableDeviceTypesLib.PortableDevicePropVariantCollection() as PortableDeviceApiLib.IPortableDevicePropVariantCollection; objectIds.Add(variant); content.Delete(0, objectIds, null); } catch (Exception ex) { Logger.Basic.Error("Portable Device DeleteFile : " + ex.ToString(), ex); } finally { if (Marshal.IsComObject(variant)) { Marshal.ReleaseComObject(variant); } if (content != null && Marshal.IsComObject(content)) { Marshal.ReleaseComObject(content); } } }
private void RealDeleteOperation(PortableDevice device, PortableDeviceFile item, List <ImageItem> deletedFiles, List <ImageItem> willbeuploaded) { try { foreach (ImageItem imageItem in deletedFiles) { if (imageItem.UniqueIdentifier == item.Id) { deleteoperationcanbedone = true; _imgManager.DeleteImageFromDirectory(imageItem); device.DeleteFile((PortableDeviceFile)item); deleteditem++; Action action = () => ImageNumber(deleteditem, deletedFiles.Count); Dispatcher.CurrentDispatcher.Invoke(action); Thread.Sleep(100); break; } } if (!deleteoperationcanbedone && willbeuploaded.Count > 0) { SetNotification(1, PhotoUploader.Properties.Resources.main_msg_imagenoexist); Action action1 = () => ImageNumber(-1, deletedFiles.Count); Dispatcher.CurrentDispatcher.Invoke(action1); Thread.Sleep(100); } } catch (Exception ex) { Logger.Basic.Error("PWDManager Delete Operation : " + ex.ToString(), ex); } }
public bool DownloadFile(PortableDeviceFile file, string saveToPath) { bool isdownload = false; IPortableDeviceContent content; this._device.Content(out content); IPortableDeviceResources resources; content.Transfer(out resources); PortableDeviceApiLib.IStream wpdStream; uint optimalTransferSize = 0; System.Runtime.InteropServices.ComTypes.IStream sourceStream = null; IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues; DateTime createdDate = GetObjectCreationTime(content, file.Id); ImageItem imageItem = null; imageItem = new ImageItem(0, file.Id, file.Name, createdDate); var property = new _tagpropertykey(); property.fmtid = new Guid(0xE81E79BE, 0x34F0, 0x41BF, 0xB5, 0x3F, 0xF1, 0xA0, 0x6A, 0xE8, 0x78, 0x42); property.pid = 0; string imgpath = string.Empty; FileStream targetStream = null; try { resources.GetStream(file.Id, ref property, 0, ref optimalTransferSize, out wpdStream); sourceStream = (System.Runtime.InteropServices.ComTypes.IStream)wpdStream; var filename = Path.GetFileName(file.Id); imgpath = saveToPath + "IMG_1_" + imageItem.TakenTime.ToString() + "_" + file.Id + ".jpg"; targetStream = new FileStream(imgpath, FileMode.Create, FileAccess.Write); unsafe { var buffer = new byte[2048]; int bytesRead; do { sourceStream.Read(buffer, 2048, new IntPtr(&bytesRead)); targetStream.Write(buffer, 0, 2048); } while (bytesRead > 0); targetStream.Close(); isdownload = true; } } catch (Exception ex) { isdownload = false; Logger.Basic.Error("PortableDevice DownloadFile : " + ex.ToString(), ex); } finally { if (resources != null && Marshal.IsComObject(resources)) { Marshal.ReleaseComObject(resources); } if (content != null && Marshal.IsComObject(content)) { Marshal.ReleaseComObject(content); } if (sourceStream != null && Marshal.IsComObject(sourceStream)) { Marshal.ReleaseComObject(sourceStream); } if (!isdownload) { if (File.Exists(imgpath)) { if (targetStream != null) { targetStream.Close(); } File.Delete(imgpath); } } } return(isdownload); }
private void RealDownloadOperation(PortableDevice device, PortableDeviceFile item) { ImageItem imageItem = null; IPortableDeviceContent content = device.GetContentofDevice(); DateTime createddate = device.GetObjectCreationTime(content, item.Id); imageItem = new ImageItem(0, item.Id, item.Id, createddate); if (_imageList.Exists((ImageItem t) => { return(t.UniqueIdentifier == item.Id); })) { countofimg++; Action action = () => FetchImageCount(countofimg, totalimagecount); Dispatcher.CurrentDispatcher.Invoke(action); Thread.Sleep(200); } else if ((!_imageList.Exists((ImageItem t) => { return(t.UniqueIdentifier == item.Id); }) || _imageList.Count == 0)) { countofimg++; _imageList.Add(imageItem); bool isok = device.DownloadFile((PortableDeviceFile)item, ImageFolder); if (isok) { Action action = () => FetchImageCount(countofimg, totalimagecount); Dispatcher.CurrentDispatcher.Invoke(action); Thread.Sleep(200); } } if (countofimg >= totalimagecount) { countofimg = 0; totalimagecount = 0; } //else if (totalimagecount > 0 && countofimg < totalimagecount) //{ // countofimg++; // Action action = () => FetchImageCount(countofimg, totalimagecount); // Dispatcher.CurrentDispatcher.Invoke(action); // Thread.Sleep(200); // if (countofimg == totalimagecount) // { // countofimg = 0; // totalimagecount = 0; // } //} //if (totalimagecount > 0) //{ // if (countofimg == totalimagecount) // { // countofimg = 0; // totalimagecount = 0; // } // device.DownloadFile((PortableDeviceFile)item, ImageFolder); //} }