Gå til innhold

Får 406 http error ved enctype="multipart/form-data"


Anbefalte innlegg

Jeg har skrevet en laget en side lokalt hvor den fungerer helt fint men når jeg laster siden opp til selve serveren får jeg en http 406 error. Har funnet ut at det har noe med et skjema jeg har for hvis jeg bytter det til text/plain så får jeg ikke feil.

 

Har søkt litt rundt men jeg blir ikke klokere på hvordan dette kan fikses...

 

Jeg har også dette scriptet som behandler det som kommer inn i skjemaet.

 

 

/**

 

* Convert a single file-input element into a 'multiple' input list

 

*

 

* Usage:

 

*

 

* 1. Create a file input element (no name)

 

* eg.

 

*

 

* 2. Create a DIV for the output to be written to

 

* eg.

 

*

 

* 3. Instantiate a MultiSelector object, passing in the DIV and an (optional) maximum number of files

 

* eg. var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );

 

*

 

* 4. Add the first element

 

* eg. multi_selector.addElement( document.getElementById( 'first_file_element' ) );

 

*

 

* 5. That's it.

 

*

 

* You might (will) want to play around with the addListRow() method to make the output prettier.

 

*

 

* You might also want to change the line

 

* element.name = 'file_' + this.count;

 

* ...to a naming convention that makes more sense to you.

 

*

 

* Licence:

 

* Use this however/wherever you like, just don't blame me if it breaks anything.

 

*

 

* Credit:

 

* If you're nice, you'll leave this bit:

 

*

 

* Class by Stickman -- http://www.the-stickman.com

 

* with thanks to:

 

* [for Safari fixes]

 

* Luis Torrefranca -- http://www.law.pitt.edu

 

* and

 

* Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com

 

* [for duplicate name bug]

 

* 'neal'

 

*/

 

function MultiSelector( list_target, max ){

 

 

 

// Where to write the list

 

this.list_target = list_target;

 

// How many elements?

 

this.count = 0;

 

// How many elements?

 

this.id = 0;

 

// Is there a maximum?

 

if( max ){

 

this.max = max;

 

} else {

 

this.max = -1;

 

};

 

 

 

/**

 

* Add a new file input element

 

*/

 

this.addElement = function( element ){

 

 

 

// Make sure it's a file input element

 

if( element.tagName == 'INPUT' && element.type == 'file' ){

 

 

 

// Element name -- what number am I?

 

element.name = 'file_' + this.id++;

 

 

 

// Add reference to this object

 

element.multi_selector = this;

 

 

 

// What to do when a file is selected

 

element.onchange = function(){

 

 

 

// New file input

 

var new_element = document.createElement( 'input' );

 

new_element.type = 'file';

 

 

 

// Add new element

 

this.parentNode.insertBefore( new_element, this );

 

 

 

// Apply 'update' to element

 

this.multi_selector.addElement( new_element );

 

 

 

// Update list

 

this.multi_selector.addListRow( this );

 

 

 

// Hide this: we can't use display:none because Safari doesn't like it

 

this.style.position = 'absolute';

 

this.style.left = '-1000px';

 

 

 

};

 

// If we've reached maximum number, disable input element

 

if( this.max != -1 && this.count >= this.max ){

 

element.disabled = true;

 

};

 

 

 

// File element counter

 

this.count++;

 

// Most recent element

 

this.current_element = element;

 

 

 

} else {

 

// This can only be applied to file input elements!

 

alert( 'Error: not a file input element' );

 

};

 

 

 

};

 

 

 

/**

 

* Add a new row to the list of files

 

*/

 

this.addListRow = function( element ){

 

 

 

// Row div

 

var new_row = document.createElement( 'div' );

 

 

 

// Delete button

 

var new_row_button = document.createElement( 'input' );

 

new_row_button.type = 'button';

 

new_row_button.value = 'Slett';

 

 

 

// References

 

new_row.element = element;

 

 

 

// Delete function

 

new_row_button.onclick= function(){

 

 

 

// Remove element from form

 

this.parentNode.element.parentNode.removeChild( this.parentNode.element );

 

 

 

// Remove this row from the list

 

this.parentNode.parentNode.removeChild( this.parentNode );

 

 

 

// Decrement counter

 

this.parentNode.element.multi_selector.count--;

 

 

 

// Re-enable input element (if it's disabled)

 

this.parentNode.element.multi_selector.current_element.disabled = false;

 

 

 

// Appease Safari

 

// without it Safari wants to reload the browser window

 

// which nixes your already queued uploads

 

return false;

 

};

 

 

 

// Set row value

 

new_row.innerHTML = element.value;

 

 

 

// Add button

 

new_row.appendChild( new_row_button );

 

 

 

// Add it to the list

 

this.list_target.appendChild( new_row );

 

 

 

};

 

 

 

};

 

Lenke til kommentar
Videoannonse
Annonse

Har nå prøvd flere slike bildeopplastingsscript som baserer seg på Ajax og PHP og på siden som skal behandle resultatet får jeg error 406 på alle..

Kan safe_mode i PHP ha noe med saken å gjøre?

 

EDIT: Prøvde nettopp med denne lille kodesnutten for å se om det virket noe det ikke gjorde, det virker lokalt hvor jeg bruker xampp men ikke på webhotellet mitt..

 

 

<html>

<head>

<title></title>

</head>

<body>

<form enctype="multipart/form-data" action="test.php" method="POST">

<input type="file" name="test">

<input type="submit" name="test">

</form><BR><?php<BR>print_r($_FILES);

?>

</body>

</html>/CODE]

 

 

Endret av vi er lost
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...