Pedro, 

    Acredito que o que deseja fazer é mais simples do que o código abaixo.
    No help do próprio Zope, entre em Zope Help > API Reference >
ObjectManager.

    Lá há alguns exemplos de como manipular objetos do ZODB através de
python scripts, desse modo você consegue fazer upload de arquivos
adicionando novos objetos no banco do próprio Zope.

Att,
Vinícius Osiro

--- Em zope-pt@yahoogrupos.com.br, Pedro Vítor Lima Rodrigues
<[EMAIL PROTECTED]> escreveu
>
> Pesoal,
> Estou precisando de um script que, através de um input file de um
form, faça o upload de um arquivo, copie para uma determinada pasta
com um nome e copie para outra pasta com outro nome. Não entendo muito
python, qualquer erro grotesco me desculpem pois ainda sou iniciante,
mais pesquisando na web consegui chegar no seguinte:
> 
> import cgi, os
> import cgitb; cgitb.enable()
> &nbsp;&nbsp;&nbsp; #Função que vai carregar o arquivo. Recebe um
caminho de arquivo
> def uploadBi(self):
> &nbsp;&nbsp;&nbsp; try: 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import msvcrt
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msvcrt.setmode (0, os.O_BINARY)
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msvcrt.setmode (1, os.O_BINARY)
> &nbsp;&nbsp;&nbsp; except ImportError:
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass
> &nbsp;&nbsp;&nbsp; #Pega o objeto do form
> &nbsp;&nbsp;&nbsp; form = cgi.FieldStorage()
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
> &nbsp;&nbsp;&nbsp; #pega o conteúdo do elemento caminho, do form.
Esse elemento
> &nbsp;&nbsp;&nbsp; #possui o arquivo
> &nbsp;&nbsp;&nbsp; fileitem = form['caminho']
> &nbsp;&nbsp;&nbsp; 
> &nbsp;&nbsp;&nbsp; #chama função para gravar o arquivo. envia como
parâmetros
> &nbsp;&nbsp;&nbsp; #o caminho do arquivo, o camingo e o nome a ser
gravado nele
> &nbsp;&nbsp;&nbsp; arroxaBi(fileitem, '/publicacoes/bi/bi-atual/',
'biatual.pdf')
> &nbsp;&nbsp;&nbsp; arroxaBi(fileitem, '/publicacoes/bi/',
os.path.basename(fileitem.filename))
> 
> def arroxaBi(fileitem, caminho, nome_do_arquivo):
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
> &nbsp;&nbsp;&nbsp; #se o arquivo contiver um nome...
> &nbsp;&nbsp;&nbsp; if fileitem.filename:
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fn =
os.path.basename(fileitem.filename)
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open(caminho + fn,
'wb').write(fileitem.file.read())
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message = 'O arquivo "' +
fn + '"foi carregado com sucesso!'
> &nbsp;&nbsp;&nbsp; #senão...
> &nbsp;&nbsp;&nbsp; else:
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message = 'Nenhum arquivo
foi carregado!'
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
> &nbsp;Fiz um external method para o arquivo colocado na pasta
Extensions, chamando a função uploadBi. Está dando erro no seguinte:
> 
> &gt;KeyError: 'caminho'
> 
> 
> 
>       Abra sua conta no Yahoo! Mail, o único sem limite de espaço
para armazenamento!
> http://br.mail.yahoo.com/
>


Responder a