zend framework multiple input file upload - file

i have a form that contains two file element with unique name. i want to reach each file element from Zend_File_Transfer_Adapter_Http(); how can i do that?
if i use
$apt = new Zend_File_Transfer_Adapter_Http();
.
.
$apt->receive();
two files have been uploaded. but i execute different queries for each file element.
for example
$smallPic = small pic name that i get from input smallPic
i execute
update products set smallPic = '$smallPic'
and for large pic
$largePic = large pic name that i get from input largePic
i execute
update products set largePic = '$largePic'
how can i reach each input file element with $apt ?

Here is some code I have used in the past to receive multiple files from a Zend_Form where many of the file upload fields were dynamic and not part of the form.
Since you know the names of the two file uploads, you can also say $apt->getFileInfo('my_file');
$apt = new Zend_File_Transfer_Adapter_Http();
$files = $apt->getFileInfo();
foreach($files as $file => $fileInfo) {
if ($apt->isUploaded($file)) {
if ($apt->isValid($file)) {
if ($apt->receive($file)) {
$info = $apt->getFileInfo($file);
$tmp = $info[$file]['tmp_name'];
$data = file_get_contents($tmp);
// here $tmp is the location of the uploaded file on the server
// var_dump($info); to see all the fields you can use
}
}
}
}
Hope that helps.

Related

I need to pull the text of an image file name from an array but am only getting "pyimage#" or "tkinter.PhotoImage object at X" as replies

I'm trying to create an array with an assortment of different randomized image files in it to display on a set of buttons in Tkinter. When a given button is clicked I'd like to add the text of that file's name to a new array. Basically, when button with imageX is clicked add "imageX" to a new array.
Unfortunately, I always get a return that isn't the image's filename, or the variable that I've set to correspond to that image, but instead either:
"tkinter.PhotoImage object at X" (where is X is a location like "0x0000020FC894D2E0") if the command is populationbeta.append (population[0])
or
"pyimage#" (where # is an integer that seems to relate to the number of images in the source file), if I change the command to populationbeta.append (str(population[0]))
I feel like there should be a simple way of doing this and I've tried every work around I can think of but I'm not getting it to work. Any help would be very much appreciated! Thanks!
Here's a shortened/simplified version of the code in question:
master=tkinter.Tk()
master.title("Not working")
a1b1c1 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c1.png")
a1b1c2 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c2.png")
a1b1c3 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b1c3.png")
a1b2c1 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b2c1.png")
a1b2c2 = PhotoImage(file = r"C:/users/jdavis319/documents/bushesoflove/BoLdraw/a1b2c2.png")
population = [a1b1c1, a1b1c2, a1b1c3, a1b2c1, a1b2c2]
populationbeta = []
populationbeta.append(population[0])
print(populationbeta)
This gives the result: "[<tkinter.PhotoImage object at 0x000001A419D4F070>]"
This gives the result: "[<tkinter.PhotoImage object at 0x000001A419D4F070>]"
Correct. That shows that you have a list of PhotoImage objects. If you want the filenames you can use .cget('file') on the objects. cget is a common tkinter method for getting the value of a configured option.
filenames = [image.cget('filename') for image in population]
Or, if you don't want to use a list comprehension to create a list of filenames, you can do it on an individual image like so:
populationbeta.append(population[0].cget("file"))

Google Apps Script Duplicate A File

I am simply trying to duplicate an open sheets file. I tried so many variation without success. The below is an example. Would value any assistance. Thank You.
function copyDocs() {
var file = DriveApp.getFilesByName('My Income Statement');
file.makeCopy();
}
Data retrieved using DriveApp.getFilesByName() is FileIterator. In this case, file is retrieved by using next().
There are 2 patterns for the sample script.
Sample script 1
Pattern 1 :
If the filename is only one in your Drive, you can use following sample script. This sample copies the file using the filename.
function copyDocs() {
var file = DriveApp.getFilesByName('My Income Statement').next();
file.makeCopy();
}
Pattern 2 :
If there are files with the same filename and you want to copy one of them, you can use following sample script. This sample copies the file using the fileID. The fileID can be retrieved as follows.
For document,
https://docs.google.com/document/d/### File ID ###/edit
For spreadsheet,
https://docs.google.com/spreadsheets/d/### File ID ###/edit
Sample script :
function copyDocs() {
var file = DriveApp.getFileById("### File ID ###");
file.makeCopy();
}
Sample script 2
This sample is for opening the copied file using a dialog on spreadsheet. Since the copied file is opened as new window, please permit to open popup window.
Copy and paste following script to container-bound script of spreadsheet.
Run dialog().
Push a copy button on the dialog box on spreadsheet.
By above flow, the file with fileId is copied and opened as new window.
function dialog() {
var data = '<input type="button" value="copy" onclick="google.script.run.withSuccessHandler(openfile).filecopy();"><script>function openfile(url) {window.open(url);}</script>';
var html = HtmlService.createHtmlOutput(data);
SpreadsheetApp.getUi().showModalDialog(html, 'Sample dialog');
}
function filecopy(){
var fileId = "### File ID ###";
return DriveApp.getFileById(fileId).makeCopy().getUrl();
}

How do I save CSV data to variables based on a ListBox selection?

I have a drop down list in my script that gets populated by the "name" column in a CSV file. I'd like to save the information in the other columns that go with that name into variables to be used later.
For example (bullets are there so they show underneath each other, showed as one line otherwise):
Name,Address,PhoneNumber,Email
Bob,1234 Bob Rd,123-4567,bob#email.com
Bill,5678 Bill Ave,246-8024,bill#email.com
The drop down list would show Bob and Bill. Based on what I pick I'd like the rest of their info to be saved into 3 different variables, $Address, $PhoneNumber, and $Email.
I've got as far as importing the CSV into the array and sorting them alphabetically.
$Customers = #(Import-CSV "$dir\Apps\Customers.csv")
$Array = $Customers.name | Sort-Object
Here's part of the drop down box code:
ForEach ($Choice in $Array) {
[void] $companybox.Items.Add($Choice)
}
After that I can't figure out how to grab the correct information based on what's been chosen when I click a button.
Here's the button code:
$handler_gobutton_Click = { $company = $companybox.SelectedItem
....
}
I have a few If statements in there right now for an earlier solution that doesn't use CSV's, but I'd like to move to a CSV file if possible.
Thanks!
EDIT: I'm thinking what I need to do is somehow find the array count number based on the name column. After that I should be able to save $array[0].address into a variable, for example. Finding how to compare the variable with the name in it to the name in the array and from that getting the count number is coming up empty so far... Ideas?
Got it to work!
$handler_gobutton_Click = {
$company = $companybox.SelectedItem
$index = [array]::IndexOf($customers.name,$company)
If ($customers[$index].uninstall -eq "True") { $uninstallbox.checked = $True }
... and so on
}
Source: https://www.reddit.com/r/PowerShell/comments/t1928/finding_array_index_number/

WPF find all regex matches in a xps document

I need to search an expression inside a xps document then list all matches (with the page number of each match).
I searched in google, but no reference or sample found which addresses this issue .
SO: How can I search a xps document and get this information?
The first thing to note is that an XPS file is an Open Packaging package. It can be opened and the contents accessed via the System.IO.Packaging.Package class. This makes any operations on the contents much easier.
Here's an example of how to search the page content with a given regex, while also tracking which page the match occurs on.
var regex = new Regex(#"th\w+", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
using(var xps = System.IO.Packaging.Package.Open(#"C:\path\to\regex.oxps"))
{
var pages = xps.GetParts()
.Where (p => p.ContentType == "application/vnd.ms-package.xps-fixedpage+xml")
.ToList();
for (var i = 0; i < pages.Count; i++)
{
var page = pages[i];
using(var reader = new StreamReader(page.GetStream()))
{
var s = reader.ReadToEnd();
var matches = regex.Matches(s);
if (matches.Count > 0)
{
var matchText = matches
.Cast<Match>()
.Aggregate (new StringBuilder(), (agg, m) => agg.AppendFormat("{0} ", m.Value));
Console.WriteLine("Found matches on page {0}: {1}", i + 1, matchText);
}
}
}
}
It is not going to be as simple as you might have thought. XPS files are compressed (zipped) files containing a somewhat complex folder structure containing all the text, fonts, graphics and other items. You can use compression tools such as 7-Zip or WinZip etc. to extract the entire folder structure from an XPS file.
Having said that, you can use the following sequence of steps to do what you want:
Extract the contents of your XPS file programmatically in a temp folder. You can use the new ZipFile class for this purpose if you're using .NET 4.5 or better.
The extracted folder will have the following folder structure:
_rels
Documents
1
_rels
MetaData
Pages
_rels
Resources
Fonts
MetaData
Go to Documents\1\Pages\ subfolder. Here you'll find one or more .fpage files, one for each page of your document. These files are in XML format and contain all text contained in the page in a structured manner.
Use simple loop to iterate through all .fpage files, opening each of them using an XML reader such as XDocument or XmlDocument and search for required text in node values using RegEx.IsMatch(). If found, note down the page number in a List and move ahead.

drupal 7 file field formatter on custom node for javascript (to set up jQuizMe)

I have set up a module with custom node type (I called jquizme, after the javascript jQuizMe that I really like using). I set up two fields for the javascript files I need to supply to make it work (after the general jQuizMe-2.2.js file you need to add another two javascript files - one for settings and one for the quiz content).
Drupal saves the files as myjavascriptfile.js.txt - I tested them and they still work to make the jQuizMe interface - ok. the problem is, I want to add these files on the node page... the files will be different for each node. how can I access the files for the drupal_add_js() function so they will load the files for the node in question?
I tried setting up custom field formatters, but I don't know how to access the uri for the files of a given node automatically to put in the drupal_add_js() function (I can add a static file and it loads fine ... I did this with hook_node_view ( jquizme_node_view ).
So I just need a way to access the info for the files... how are they linked to each node? I can't find the connection.
As you probably noticed, I am a module writing newbie, and I probably won't understand much related to object oriented programming sorry, haven;t progressed to that level yet), but I am open to any answer. I am sure I left out important info, but this it already getting too long.
I also set up a special page earlier on to just see if I could get jQuizMe to work in Drupal so that is still in the code.
I have tried many answers (last six hours or so... too much to say here), the latest of which is using tokens, but that is not working. Here is what I have so far:
function jquizme_node_view($node, $view_mode, $langcode) {
switch ($node->type) {
case 'jquizme':
$items = field_get_items('node', $node, 'field_myfield', $node->language);
drupal_add_css(drupal_get_path('module', 'jquizme') . '/jQuizMe.css', >array('scope' => 'header'));
drupal_add_js(drupal_get_path('module', 'jquizme') . '/alert.js');
drupal_add_js(drupal_get_path('module', 'jquizme') . '/jQuizMe-2.2.js', >array('scope' => 'header'));
//drupal_add_js($tokens['node']['jquizme_js1_field'], array('scope' => >'header'));
//drupal_add_js($tokens['node']['jquizme_js2'], array('scope' => 'header'));
break;
}
}
Thanks in advance!
Can you try this?
// Let me assume that the field names of your two file fields
// are jquizme_js1_field and jquizme_js2_field for convenience..
function jquizme_node_view($node, $view_mode, $language) {
$items = field_get_items('node', $node, 'jquizme_js1_field');
_jquizme_add_js_from_filefield($items);
$items = field_get_items('node', $node, 'jquizme_js2_field');
_jquizme_add_js_from_filefield($items);
}
// Given the values of a filefield attached to some entity,
// adds them as JS files to the page.
function _jquizme_add_js_from_filefield($items = array()) {
foreach ($items as $item) {
$fid = &$item['fid'];
$file = file_load($fid);
if (!$file) {
continue; // Maybe the file got deleted..
}
$wrapper = file_stream_wrapper_get_instance_by_uri($file->uri);
$path = $wrapper->realpath();
// Ensure that the path exists and that it is a Javascript file..
if (file_exists($path) && preg_match('\.js$', $path)) {
drupal_add_js($path, array('type' => 'file'));
}
}
}

Resources